There are a couple of WMI classes that provide information about resolution and monitors. One of these classes is the Win32_VideoController class. I can query this by using Get-CimInstance in Windows PowerShell 3.0, or I can use Get-WmiObject in Windows 7 with the default Windows PowerShell 2.0. The command is shown here:
Get-WmiObject win32_videocontroller
Following is the command and its associated output:
By looking at the output, I can see that I am most interested in the caption, and in the CurrentHorizontalResolution and CurrentVerticalResolution properties. I write the query this way:
PS C:\> Get-WmiObject win32_videocontroller | select caption, CurrentHorizontalResolution, CurrentVerticalResolution
The command and its output are as follows:
The cool thing is that I can use a wildcard character and the alias and really shorten this command as shown here:
GWMI win32_videocontroller | select caption, Current*Resolution
So, I have discovered that I have two video controllers on my computer, but both of them are set to use the same resolution.
Well, what about monitors?
To find information about the monitors, I use the Win32_Desktopmonitor WMI class. The query is shown here:
Get-WmiObject win32_desktopmonitor
The default display shows information about the screen height and screen width. But this information, for some reason, does not appear for my laptop monitor itself. This is shown in the following image:
Of course, I already have some of this information from the Video Controller. So I can sort of work back and forth with this.
There is a cool WMI class on my laptop running Windows 8 (I’m not sure if it exists on Windows 7 devices). It is in the Root\WMI namespace. The class is WmiMonitorBasicDisplayParams, and it tells me if a display is active. It also tells me the capabilities of that monitor. Using the Get-CimInstance cmdlet produces a nice output (but you can also use Get-WmiObject). Here is the command:
Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorBasicDisplayParams
The command and the output are shown here:
The SupportedDisplayFeatures property returns another object. The easy way to look at this is to store the object in a variable, and then address it directly. This technique is shown in the following image:
BG, that is all there is to using Windows PowerShell to find multi-monitoring information