get-ciminstance是查询windows显示设备信息的现代推荐命令,支持获取显示器型号、分辨率、刷新率、pnp id及edid数据,需结合win32_desktopmonitor、win32_videocontroller和wmimonitorid等cim类,并注意管理员权限与多显卡区分。
可以使用 powershell 查询 windows 显示设备信息,主要依赖 get-wmiobject 或更现代的 get-ciminstance 命令,结合 wmi/cim 类获取显示器型号、分辨率、刷新率、pnp id、连接状态等关键参数。
查询已连接的显示器基本信息
运行以下命令可列出所有检测到的显示设备(包括内置屏和外接显示器):
Get-CimInstance -ClassName Win32_DesktopMonitor | Select-Object Name, MonitorManufacturer, MonitorType, ScreenHeight, ScreenWidth, PNPDeviceID说明:
- Name:通常为“Generic PnP Monitor”,部分品牌显示器可能显示具体型号
- MonitorManufacturer:厂商名称(如 Dell、LG、Samsung)
- ScreenHeight/ScreenWidth:当前逻辑分辨率(单位:像素),非物理面板原生分辨率
-
PNPDeviceID:唯一硬件标识,可用于识别具体设备(例如
DISPLAY\GSM59B9\5&12345678&0&UID12345)
获取当前活动显示配置(含缩放、DPI、多屏布局)
Windows 图形子系统信息需通过 .NET API 或 Get-CimInstance 查询 Win32_VideoController 和桌面设置:
说明:
- VideoModeDescription:包含当前分辨率与刷新率的字符串(如 “1920 x 1080 x 4294967296 位色彩 @ 60Hz”)
- CurrentHorizontal/VerticalResolution:显卡报告的实时输出分辨率
- CurrentRefreshRate:当前刷新率(单位 Hz),对高刷屏或自适应同步很重要
- 注意:多显卡系统可能返回多个结果,需结合
AdapterRAM或PNPDeviceID区分主显卡
读取显示器 EDID 数据(获取真实型号与序列号)
Windows 不直接暴露完整 EDID,但可通过 WMI 的 WmiMonitorID 类提取制造商 ID、产品代码和序列号(需管理员权限):
$model = ($_.UserFriendlyName -ne $null) ? [System.Text.Encoding]::ASCII.GetString($_.UserFriendlyName) : "N/A"
$serial = ($_.SerialNumberID -ne $null) ? [System.Text.Encoding]::ASCII.GetString($_.SerialNumberID) : "N/A"
[PSCustomObject]@{Model=$model.Trim(); Serial=$serial.Trim(); Manufacturer=$_.ManufacturerName} }
说明:
- UserFriendlyName:多数情况下是显示器真实型号(如 “DELL U2720Q”)
- SerialNumberID:十六进制字节数组,转 ASCII 后可得序列号(部分厂商未填充)
-
ManufacturerName:三字符厂商编码(如 “DEL” 表示 Dell),可用
Get-MonitorManufacturer辅助解码
快速诊断显示器连接状态与故障线索
若显示器未被识别或显示异常,可组合检查以下内容:
# 查看是否存在“未知设备”或禁用状态Get-PnpDevice -Class Monitor | Where-Object {$_.Status -ne "OK" -or $_.Availability -ne 3}
# 检查显示驱动是否加载正常
Get-WindowsDriver -Online -All | Where-Object {$_.ClassName -eq "Display"}
常见提示:
- 状态为 “Error” 或 “Disabled” 表示驱动异常或硬件未就绪
- PnP 设备名含 “Generic Non-PnP Monitor” 通常表示缺少 EDID 或使用转接器(如 HDMI→VGA)
- 运行
dxdiag /t dxdiag.txt可导出完整图形诊断报告(含每块显示器的详细时序)










