Получить разрешение экрана с помощью WMI / powershell в Windows 7 - PullRequest
15 голосов
/ 01 ноября 2011

Я использую следующий скрипт для получения разрешения экрана в Windows с помощью WMI.Сценарий отлично работает, когда компьютер находится в альбомном режиме, но возвращает неверные значения в портретном режиме.Работает нормально в XP и не пробовал в Vista.Кто-нибудь может подтвердить, что это ошибка в WMI Windows 7.

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

Ответы [ 5 ]

31 голосов
/ 01 ноября 2011

Для записи код 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}
10 голосов
/ 01 апреля 2014

Вы можете получить это из класса Win32_VideoController WMI.Свойство VideoModeDescription включает разрешение экрана и глубину цвета.

(Get-WmiObject -Class Win32_VideoController).VideoModeDescription;

Результат

1600 x 900 x 4294967296 colors
4 голосов
/ 14 мая 2014

То же, что и другие ответы, но для простого cmd:

wmic path Win32_VideoController get VideoModeDescription

3 голосов
/ 03 августа 2016

@ Ответ Шей Леви, приведенный выше, точно сообщает ширину / высоту, которые были активны при запуске сеанса 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

0 голосов
/ 09 мая 2012

Вы можете получить все доступные разрешения с помощью этой команды:

$Query = "SELECT * FROM CIM_VideoControllerResolution"
$res = Get-WMIObject -query $Query | Select Caption
...