想使用deepseek生成一个bat文件,双击就可以查询电脑硬件信息,可是这个家伙连基本语法都搞错了啊?
以下是生成的代码,运行时提示少了个}号。。。。哪个懂windows的powershell的这些知识,请帮忙看一下
[C] 纯文本查看 复制代码 @echo off
powershell -NoProfile -ExecutionPolicy Bypass -Command "& {
# 硬件信息收集
$info = @{}
# 操作系统信息
$os = Get-CimInstance Win32_OperatingSystem
$info['OS'] = @{
'操作系统' = $os.Caption.Trim()
'版本' = $os.Version
'架构' = $os.OSArchitecture
}
# 处理器信息
$cpu = Get-CimInstance Win32_Processor | Select-Object -First 1
$info['处理器'] = @{
'型号' = $cpu.Name.Trim()
'核心数' = $cpu.NumberOfCores
'线程数' = $cpu.NumberOfLogicalProcessors
'最大频率' = ($cpu.MaxClockSpeed/1000).ToString('0.00 GHz')
}
# 内存信息
$memory = Get-CimInstance Win32_PhysicalMemory
$totalMemGB = ($memory | Measure-Object -Property Capacity -Sum).Sum/1GB
$info['内存'] = @{
'总容量' = [math]::Round($totalMemGB, 2).ToString() + ' GB'
'模块' = $memory | ForEach-Object {
[math]::Round($_.Capacity/1GB, 2).ToString() + ' GB ' + $_.Speed.ToString() + 'MHz'
}
}
# 主板信息
$board = Get-CimInstance Win32_BaseBoard
$info['主板'] = @{
'制造商' = $board.Manufacturer
'型号' = $board.Product
'版本' = $board.Version
}
# 存储设备
$disks = Get-CimInstance Win32_DiskDrive | Where-Object { $_.MediaType -ne 'Removable Media' }
$info['存储'] = $disks | ForEach-Object {
@{
'型号' = $_.Model.Trim()
'容量' = [math]::Round($_.Size/1GB, 2).ToString() + ' GB'
'接口类型' = $_.InterfaceType
}
}
# 显卡信息
$gpu = Get-CimInstance Win32_VideoController
$info['显卡'] = $gpu | ForEach-Object { @{ '型号' = $_.Name.Trim() } }
# 网络适配器
$nics = Get-CimInstance Win32_NetworkAdapter | Where-Object {
$_.PhysicalAdapter -eq $true -and $_.Name -notmatch 'Virtual'
}
$info['网络适配器'] = $nics | ForEach-Object { @{ '名称' = $_.Name.Trim() } }
# 中文输出格式化
$chineseMap = @{
'OS' = '操作系统'
'处理器' = '处理器'
'内存' = '内存信息'
'主板' = '主板信息'
'存储' = '存储设备'
'显卡' = '图形设备'
'网络适配器' = '物理网络适配器'
}
# 显示信息
$info.GetEnumerator() | ForEach-Object {
Write-Host ("`n=== {0} ===" -f $chineseMap[$_.Key]) -ForegroundColor Cyan
if($_.Value -is [array]) {
$_.Value | ForEach-Object {
$_.GetEnumerator() | ForEach-Object {
Write-Host (" {0}: {1}" -f $_.Key, $_.Value)
}
Write-Host ""
}
} else {
$_.Value.GetEnumerator() | ForEach-Object {
Write-Host (" {0}: {1}" -f $_.Key, $_.Value)
}
}
} # 此处补充了缺失的闭合括号
Write-Host "`n信息收集完成,按任意键退出..." -ForegroundColor Green
}"
pause
|