Obtenir la résolution D'écran en utilisant WMI / powershell dans Windows 7
j'utilise le script suivant pour obtenir la résolution d'écran dans Windows en utilisant WMI. Le script fonctionne correctement lorsque l'ordinateur est en mode paysage, mais renvoie des valeurs incorrectes lorsque en mode portrait. Fonctionne correctement dans XP et n'a pas essayé dans Vista. Est-ce que quelqu'un peut confirmer qu'il s'agit d'un bug dans Windows 7 WMI.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & strComputer & "rootCIMV2")
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
6 réponses
Get-WmiObject -Class Win32_DesktopMonitor | Select-Object ScreenWidth,ScreenHeight
j'obtiens les mêmes valeurs en mode Paysage ou en mode Portrait.
mise à jour:
dans un environnement multi-moniteurs, vous pouvez obtenir les informations pour tous les moniteurs avec:
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}
Vous pouvez prendre cela à partir de l' Win32_VideoController
classe WMI. VideoModeDescription
propriété comprend la résolution d'écran et la profondeur de couleur.
(Get-WmiObject -Class Win32_VideoController).VideoModeDescription;
Résultat
1600 x 900 x 4294967296 colors
identique aux autres réponses, cependant pour le cmd simple:
wmic path Win32_VideoController get VideoModeDescription
la réponse de@Shay Levy ci-dessus rapporte avec précision la largeur/hauteur qui était active lorsque la session powershell a été lancée. Si vous tournez le moniteur après le lancement de PS, il continue à signaler les valeurs originales, maintenant incorrectes.
SystemInformation class fournit une autre façon d'obtenir l'orientation, et il change dans la session PS actuelle même si l'affichage est tourné après le lancement de la session.
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.SystemInformation]::ScreenOrientation
Angle0
[System.Windows.Forms.SystemInformation]::PrimaryMonitorSize
IsEmpty Width Height
------- ----- ------
False 1680 1050
Moniteur de rotation, puis...
[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
C'est mon essayer :
@echo off
Mode 45,3 & color 0A
Title Dislpay Resolution by Hackoo 2018
Set "WMIC_Command=wmic path Win32_VideoController get VideoModeDescription^,CurrentHorizontalResolution^,CurrentVerticalResolution /format:Value"
Set "H=CurrentHorizontalResolution"
Set "V=CurrentVerticalResolution"
Call :GetResolution %H% HorizontalResolution
Call :GetResolution %V% VerticalResolution
echo(
echo Screen Resolution is : %HorizontalResolution% x %VerticalResolution%
pause>nul & Exit
::****************************************************
:GetResolution
FOR /F "tokens=2 delims==" %%I IN (
'%WMIC_Command% ^| find /I "%~1" 2^>^nul'
) DO FOR /F "delims=" %%A IN ("%%I") DO SET "%2=%%A"
Exit /b
::****************************************************
Vous pouvez obtenir toute la résolution disponible avec cette commande:
$Query = "SELECT * FROM CIM_VideoControllerResolution"
$res = Get-WMIObject -query $Query | Select Caption