我扫描的机器有 2-3 个显示器。
这个命令几乎可以完成我需要的一切。
Get-CimInstance WmiMonitorID -Namespace root\wmi
但是我的报告需要包括显示器的分辨率和刷新率。
我之前实际上已经想到了这一点,但不记得我是怎么做到的。
我特别关注每个监视器的这些属性:
我相信我用过:
Get-WMiObject
or
get-ciminstance
然后以某种方式使用
CIM_MonitorResolution
(https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/cim-monitorresolution)
我也尝试过: 对于 ciminstace 我用过:
get-ciminstance -classname CIM_MonitorResolution
get-ciminstance -classname CIM_MonitorResolution -Namespace "root\cimv2"
这些从未出错,但它们也不显示任何内容。 这让我很接近:
Get-CimInstance -Namespace "root\cimv2" -ClassName "CIM_VideoControllerResolution"
但它显示了您的显示器可以使用的每一个分辨率和刷新率,但没有说明是什么显示器。
有谁知道我如何使用 powershell 获取显示器的这些属性,而无需使用 Nirsoft 等任何 3rd 方实用程序。
我特别关注每个监视器的这些属性:
HorizontalResolution;
VerticalResolution;
MaxRefreshRate;
RefreshRate;
我的模块
DisplayConfig
可以通过Get-DisplayInfo
获取分辨率和刷新率信息。我目前没有办法获得最大刷新率,但您可以通过选项卡补全以一种黑客的方式获得它(TabExpansion2 'Set-DisplayRefreshRate -DisplayId 1 -RefreshRate:').CompletionMatches.CompletionText | sort {[double]$_} -Descending | select -First 1
这是一个完整的示例:
Get-DisplayInfo | Where-Object -Property Active -EQ $true | ForEach-Object -Process {
[pscustomobject]@{
DisplayId = $_.DisplayId
DisplayName = $_.DisplayName
Width = $_.Mode.Width
Height = $_.Mode.Height
RefreshRate = $_.Mode.RefreshRate
MaxRefreshRate = (TabExpansion2 "Set-DisplayRefreshRate -DisplayId $($_.DisplayId) -RefreshRate:").CompletionMatches.CompletionText | sort {[double]$_} -Descending | select -First 1
}
}
应该注意的是,这没有考虑当前的分辨率,这可能会导致误导性的结果。例如,您的显示器可能支持 120 Hz,但仅支持 1080p,且未启用 HDR,因此如果您使用 4K,您实际上将无法使用列出的刷新率。