Скрипт PowerShell, возвращающий неверное разрешение экрана
Я только что написал простой скрипт PowerShell, чтобы получить разрешение экрана моего монитора, но он, похоже, возвращает неправильные значения.
# Returns an screen width and screen height of maximum screen resolution
function Get-ScreenSize {
$screen = [System.Windows.Forms.Screen]::PrimaryScreen
$width = $screen.Bounds.Width
$height = $screen.Bounds.Height
return $width, $height
}
Get-ScreenSize
Я запускаю этот скрипт на мониторе 4k с разрешением 3840 x 2160, но он дает мне следующий результат:
1536
864
Есть ли что-нибудь, что заставило бы System.Windows.Forms.Screen
получить неправильные значения "границ"?
3 ответов:
Это потому, что эта команда дает вам масштабируемое разрешение. Если вы используете 3840 x 2160, но не используете 100% масштабирование, вы получите другое значение.
Ну, я не совсем понял, почему получаю такие странные результаты... но я нашел другой подход, который на самом деле кажется проще и кажется точным.
$vc = Get-WmiObject -class "Win32_VideoController" $vc.CurrentHorizontalResolution $vc.CurrentVerticalResolution
Это напечатает текущее разрешение экрана и, кажется, дает мне точные результаты, которые я на самом деле искал. Если кто-нибудь выяснит, что может заставить другой подход давать неточные результаты, я все равно очень хотел бы знать, почему это происходит...
Это странно.
Почему Microsoft предоставила только командлетGet-DisplayResolution с серверным ядром?
Это издание поставляется без кнопки запуска... и согласно комментарию выше о возвращенном размере дисплея (минус start-bar); я не удивлюсь, если услышу, что командлет использует ту же библиотеку кода .NET.
Быстрый поиск в моем HKLM\SYSTEM\CurrentControlSet\Control перечисляет несколько клавиш для мониторов и значений на экране, но ничего полезный.
Правка: см.Q7967699 .
PS D:\Scripts> Add-Type -AssemblyName System.Windows.Forms PS D:\Scripts> [System.Windows.Forms.Screen]::AllScreens BitsPerPixel : 32 Bounds : {X=0,Y=0,Width=3840,Height=2160} DeviceName : \\.\DISPLAY1 Primary : True WorkingArea : {X=0,Y=0,Width=3840,Height=2120}
Comments