本文目录导读:

Windows(PowerShell)
使用 WMI(推荐)
# 获取显示器基本型号信息
Get-CimInstance -ClassName WmiMonitorID -Namespace root\wmi | ForEach-Object {
$manufacturer = ($_.ManufacturerName | Where-Object {$_ -ne 0} | ForEach-Object {[char]$_}) -join ''
$name = ($_.UserFriendlyName | Where-Object {$_ -ne 0} | ForEach-Object {[char]$_}) -join ''
$serial = ($_.SerialNumberID | Where-Object {$_ -ne 0} | ForEach-Object {[char]$_}) -join ''
[PSCustomObject]@{
Manufacturer = $manufacturer
Model = $name
SerialNumber = $serial
WeekOfManufacture = $_.WeekOfManufacture
YearOfManufacture = $_.YearOfManufacture
}
} | Format-Table
使用注册表(简单方法)
# 从注册表获取显示器信息
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Enum\DISPLAY\*\*" |
Where-Object {$_.DeviceDesc -notmatch 'Generic'} |
Select-Object DeviceDesc, FriendlyName, DeviceInstance
Windows(CMD/Batch)
@echo off :: 使用 WMIC 获取显示器信息 wmic path Win32_DesktopMonitor get Name,Manufacturer,SerialNumber,ScreenHeight,ScreenWidth :: 或者获取更详细的EDID信息 wmic path WmiMonitorID get * /format:list
Linux(Bash)
使用 edid-decode(需安装)
#!/bin/bash
# 获取显示器EDID信息
for monitor in /sys/class/drm/*/edid; do
if [ -f "$monitor" ]; then
echo "=== 显示器: $monitor ==="
edid-decode < "$monitor" | head -20
echo
fi
done
使用 get-edid(hdparm 工具)
#!/bin/bash
# 使用 hdparm 获取EDID
for i in /sys/class/drm/card*-*; do
if [ -f "$i/edid" ]; then
echo "=== $(basename $i) ==="
get-edid | parse-edid | head -20
echo
fi
done
使用 xrandr(X11环境)
#!/bin/bash # 使用 xrandr 获取显示器名称 xrandr --verbose | grep -A2 "connected" | grep -B1 "Edid" # 或者 xrandr --listmonitors
macOS(bash)
#!/bin/bash # 使用 system_profiler system_profiler SPDisplaysDataType | grep -A5 "Display Type" # 更详细的显示器信息 system_profiler SPDisplaysDataType | grep -E "Display Type|Resolution|Main Display|Mirror|Vendor|Model|Serial"
跨平台 Python 脚本
#!/usr/bin/env python3
import platform
import subprocess
import re
def get_monitor_info_windows():
"""Windows 下获取显示器信息"""
try:
cmd = 'powershell -Command "Get-CimInstance -ClassName WmiMonitorID -Namespace root\\wmi | ForEach-Object { $name = ($_.UserFriendlyName | Where-Object {$_ -ne 0} | ForEach-Object {[char]$_}) -join \\'\\'; $manu = ($_.ManufacturerName | Where-Object {$_ -ne 0} | ForEach-Object {[char]$_}) -join \\'\\'; Write-Output \\'$manu | $name\\' }"'
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
return result.stdout.strip()
except:
return "无法获取显示器信息"
def get_monitor_info_linux():
"""Linux 下获取显示器信息"""
try:
# 尝试从 /sys 获取 EDID
import glob
monitors = []
for edid in glob.glob('/sys/class/drm/*/edid'):
try:
with open(edid, 'rb') as f:
data = f.read()
if len(data) >= 256:
# 解析EDID中的显示器名称
name = data[0x48:0x68].decode('ascii', errors='ignore').strip()
if name:
monitors.append(name)
except:
continue
return '\n'.join(monitors) if monitors else "未找到显示器"
except:
return "无法获取显示器信息"
def get_monitor_info_macos():
"""macOS 下获取显示器信息"""
try:
cmd = "system_profiler SPDisplaysDataType | grep -E 'Display Type|Resolution|Vendor|Model'"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
return result.stdout.strip()
except:
return "无法获取显示器信息"
if __name__ == "__main__":
system = platform.system()
if system == "Windows":
info = get_monitor_info_windows()
elif system == "Linux":
info = get_monitor_info_linux()
elif system == "Darwin":
info = get_monitor_info_macos()
else:
info = f"未知系统: {system}"
print(f"显示器信息:\n{info}")
注意事项
- 权限问题:在 Linux 上可能需要 sudo 权限来读取 EDID
- 编码问题:Windows PowerShell 脚本中的中文需要正确编码
- 显示器可能不提供所有信息:有些显示器可能不提供序列号或制造周次
- 多显示器:上述脚本支持多显示器,会列出所有连接显示器
选择适合你系统的脚本即可,如果需要更精确的信息,建议"Windows"使用 PowerShell 方法,"Linux"安装并使用 edid-decode 工具。