【发布时间】:2018-07-16 18:57:02
【问题描述】:
我目前正在研究 Powershell,并正在编写一个从 Windows 系统获取多显示器显示配置的脚本。感谢其他人的帮助,我终于制定了一个完整的脚本来显示每台显示器的分辨率、视频输出类别、制造商和型号。这是完整的脚本:
add-type -assemblyName system.windows.forms
[system.windows.forms.screen]::AllScreens.Bounds | format-list Width,Height |
out-file -append system1.txt
enum VideoOutputTechnology {
UNINITIALIZED = -2
UNKNOW = -1
VGA = 0
S_VIDEO = 1
COMPOSITE_VIDEO = 2
COMPONENT_VIDEO = 3
DVI = 4
HDMI = 5
LVDS_OR_MIPI_DSI = 6
D_JPN = 8
SDI = 9
DISPLAYPORT_EXTERNAL = 10
DISPLAYPORT_EMBEDDED = 11
UDI_EXTERNAL = 12
UDI_EMBEDDED = 13
DONGLE_CABLE_THAT_SUPPORTS_SDTV = 14
MIRACAST_CONNECTED_SESSION = 15
INTERNAL_CONNECTION = 0x80000000
}
Get-WmiObject WmiMonitorconnectionparams -Namespace root\wmi |
Format-List @{
n='VideoOutputTechnology'
e={ [VideoOutputTechnology] $_.VideoOutputTechnology }
} >> system1.txt
Get-WmiObject WmiMonitorID -Namespace root\wmi | ForEach-Object {
[PSCustomObject]@{
Manufacturer = ($_.ManufacturerName | ForEach {[char]$_}) -join ""
Model = ($_.UserFriendlyName | ForEach {[char]$_}) -join ""
}
} | Format-List | Out-File -append system1.txt
system1.txt 中的输出为:
Width : 1920
Height : 1080
Width : 2560
Height : 1440
VideoOutputTechnology : DISPLAYPORT_EXTERNAL
VideoOutputTechnology : DVI
Manufacturer : ACI
Model : ASUS PB287Q
Manufacturer : SAM
Model : SMS27A850
我的问题是:如何按每个监视器对输出结果进行分组。 例如:
Manufacturer: ACI
Model: ASUS PB287Q
Width: 1920
Height: 1080
VideoOutputTechnology: DISPLAYPORT_EXTERNAL
Manufacturer: SAM
Model: SMS27A850
Width: 2560
Height: 1440
VideoOutputTechnology: DVI
提前感谢大家的回复。
【问题讨论】:
标签: powershell