Получить разрешение экрана с помощью WMI/powershell в Windows 7
Я использую следующий script, чтобы получить разрешение экрана в Windows с использованием WMI. script отлично работает, когда компьютер находится в ландшафтном режиме, но возвращается в портретном режиме. Работает правильно в XP и не пробовал в Vista. Может ли кто-нибудь подтвердить, что это ошибка в Windows 7 WMI.
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_DesktopMonitor",,48)
For Each objItem in colItems
Wscript.Echo "-----------------------------------"
Wscript.Echo "Win32_DesktopMonitor instance"
Wscript.Echo "-----------------------------------"
Wscript.Echo "ScreenHeight: " & objItem.ScreenHeight
Wscript.Echo "ScreenWidth: " & objItem.ScreenWidth
Next
Ответы
Ответ 1
Для записи код PowerShell:
Get-WmiObject -Class Win32_DesktopMonitor | Select-Object ScreenWidth,ScreenHeight
Я получаю те же значения в Пейзаж или в портретном режиме.
UPDATE:
В среде с несколькими мониторами вы можете получить информацию обо всех мониторах с помощью:
PS> Add-Type -AssemblyName System.Windows.Forms
PS> [System.Windows.Forms.Screen]::AllScreens
BitsPerPixel : 32
Bounds : {X=0,Y=0,Width=1280,Height=800}
DeviceName : \\.\DISPLAY1
Primary : True
WorkingArea : {X=0,Y=0,Width=1280,Height=770}
BitsPerPixel : 32
Bounds : {X=1280,Y=0,Width=1920,Height=1200}
DeviceName : \\.\DISPLAY2
Primary : False
WorkingArea : {X=1280,Y=0,Width=1920,Height=1170}
Ответ 2
Вы можете захватить это из класса Win32_VideoController
WMI. Свойство VideoModeDescription
включает разрешение экрана и глубину цвета.
(Get-WmiObject -Class Win32_VideoController).VideoModeDescription;
Результат
1600 x 900 x 4294967296 colors
Ответ 3
То же, что и другие ответы, однако для простого cmd:
wmic path Win32_VideoController get VideoModeDescription
Ответ 4
@Say Levy отвечает выше, точно сообщает о ширине/высоте, которая была активной при запуске сеанса powershell. Если вы поворачиваете монитор после запуска PS, он продолжает сообщать исходные, теперь неправильные значения.
Класс SystemInformation предоставляет другой способ получения ориентации, и он изменяется в текущем сеансе PS, даже если дисплей поворачивается после запуска сеанса.
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.SystemInformation]::ScreenOrientation
Angle0
[System.Windows.Forms.SystemInformation]::PrimaryMonitorSize
IsEmpty Width Height
------- ----- ------
False 1680 1050
Поверните монитор, затем...
[System.Windows.Forms.SystemInformation]::ScreenOrientation
Angle90
[System.Windows.Forms.SystemInformation]::PrimaryMonitorSize
IsEmpty Width Height
------- ----- ------
False 1050 1680
https://msdn.microsoft.com/en-us/library/system.windows.forms.systeminformation(v=vs.110).aspx
Ответ 5
Вы можете получить все доступные разрешения с помощью этой команды:
$Query = "SELECT * FROM CIM_VideoControllerResolution"
$res = Get-WMIObject -query $Query | Select Caption