PowerShell命令无法返回系统型号的问题求助
PowerShell命令无法返回系统型号的问题求助
别担心,我完全理解你想用PowerShell简化工作的需求,这问题很好解决!
你原来的命令里System Model字段为空,核心原因是**Win32_BIOS这个WMI类里根本没有名为System Model的属性**——这个信息其实存在于Win32_ComputerSystem类里。
我给你修正后的两种方案,选你顺手的用就行:
方案1:一次性整合查询(适合快速执行)
Get-WmiObject Win32_ComputerSystem | Select-Object Manufacturer, @{Name="System Model"; Expression={$_.Model}}, @{Name="SMBIOSBIOSVersion"; Expression={(Get-WmiObject Win32_BIOS).SMBIOSBIOSVersion}}, @{Name="SerialNumber"; Expression={(Get-WmiObject Win32_BIOS).SerialNumber}}, @{Name="AssetTag"; Expression={(Get-WmiObject Win32_SystemEnclosure).SMBIOSAssetTag}}
方案2:先获取对象再整合(更高效,避免重复调用WMI)
如果需要经常执行这类查询,推荐这种方式,减少系统资源消耗:
# 先把需要的系统信息对象都获取一次 $computerInfo = Get-WmiObject Win32_ComputerSystem $biosInfo = Get-WmiObject Win32_BIOS $enclosureInfo = Get-WmiObject Win32_SystemEnclosure # 整理输出需要的字段 $computerInfo | Select-Object Manufacturer, @{Name="System Model"; Expression={$computerInfo.Model}}, @{Name="SMBIOSBIOSVersion"; Expression={$biosInfo.SMBIOSBIOSVersion}}, @{Name="SerialNumber"; Expression={$biosInfo.SerialNumber}}, @{Name="AssetTag"; Expression={$enclosureInfo.SMBIOSAssetTag}}
额外小建议
如果你用的是PowerShell 3.0及以上版本,微软更推荐用Get-CimInstance代替Get-WmiObject(后者已经逐步被淘汰),用法几乎一样,把上面命令里的Get-WmiObject换成Get-CimInstance就行,性能和兼容性更好。
备注:内容来源于stack exchange,提问作者user1800001
相关产品推荐
相关产品推荐

