powershell 通过 cim(推荐)或 wmi 直接获取硬件信息,如 cpu、内存、磁盘、主板、bios、显卡、网卡等;支持远程查询需启用 winrm;部分敏感信息需高权限。
powershell 通过 wmi(windows management instrumentation)或其现代替代 cim(common information model)可直接访问系统底层硬件信息,无需第三方工具。推荐优先使用 cim cmdlets(如 get-ciminstance),因它们基于 ws-management 协议,更安全、跨平台兼容性更好,且在 powershell 3.0+ 中默认启用。
获取常见硬件类信息(CPU、内存、磁盘、主板)
WMI/CIM 将硬件抽象为标准类,对应命名空间 root/cimv2。常用类包括:
-
CIM_Processor:CPU 型号、核心数、线程数、主频(
Name、NumberOfCores、NumberOfLogicalProcessors、MaxClockSpeed) -
CIM_PhysicalMemory:内存条详细信息(
Capacity、Manufacturer、PartNumber、Speed) -
CIM_DiskDrive:物理磁盘(
Model、Size、InterfaceType、MediaType) -
CIM_BaseBoard:主板型号与制造商(
Product、Manufacturer、SerialNumber)
示例命令:
Get-CimInstance CIM_Processor | Select Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed
Get-CimInstance CIM_PhysicalMemory | Select Capacity, Manufacturer, PartNumber, Speed | ForEach-Object { $_.Capacity = [math]::Round($_.Capacity / 1GB, 2); $_ }
查询 BIOS 和固件信息
BIOS 版本、发布日期、SMBIOS 版本等由 CIM_BIOSElement 提供;UEFI 状态可通过 Win32_Firmware(仅支持较新系统)或检查 CSName + BootROMSupported 辅助判断。
Get-CimInstance CIM_BIOSElement | Select Manufacturer, SMBIOSBIOSVersion, ReleaseDate- 若需确认是否为 UEFI 启动:
(Get-CimInstance Win32_ComputerSystem).PCSystemType -eq 2(2表示 UEFI)
获取显卡与网卡设备详情
显卡信息来自 CIM_VideoController(注意:它反映的是 Windows 显示驱动层视图,非原始 GPU 芯片 ID);精确识别 GPU 厂商/型号建议结合 CIM_VideoControllerResolution 或调用 Win32_VideoController(兼容性更广)。
Get-CimInstance CIM_VideoController | Select Name, VideoProcessor, AdapterRAM, DriverVersion- 网卡物理属性:
Get-CimInstance CIM_NetworkAdapter | Where-Object { $_.NetEnabled } | Select Name, Manufacturer, ProductName, Speed - 获取 MAC 地址和 IPv4 配置需关联
CIM_NetworkAdapterConfiguration,例如:Get-CimInstance CIM_NetworkAdapterConfiguration | Where-Object { $_.IPAddress } | Select IPAddress, IPSubnet, MACAddress
远程查询与权限注意事项
CIM 支持远程操作,但需目标机器开启 WinRM 服务并配置信任(默认仅本地可用)。常用方式:
- 启用 WinRM(管理员权限):
Enable-PSRemoting -Force或winrm quickconfig - 远程获取 CPU 信息:
Get-CimInstance -ClassName CIM_Processor -ComputerName "RemotePC" -Credential (Get-Credential) - 若遇“访问被拒绝”,检查远程机器的 DCOM/WMI 权限,或改用
CimSession复用连接:$s = New-CimSession -ComputerName "RemotePC" -Credential $cred; Get-CimInstance -CimSession $s -ClassName CIM_DiskDrive
部分敏感信息(如 TPM 状态、安全启动配置)需提升至 System 权限或使用专用类(如 Win32_Tpm、Microsoft_WmiProvider_RegistryProvider),普通用户可能受限。











