Check Screen Resolution with PowerShell

Read the resolution of every connected monitor via the .NET Screen class — handy over RDP where the Display settings page misleads.

WindowsdisplayresolutionpowershellLow risk
Load System.Windows.Forms with Add-Type, then read [System.Windows.Forms.Screen]::AllScreens for each monitor's DeviceName, Bounds, and Primary flag.

01Command

Command
$ Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Screen]::AllScreens | Format-Table DeviceName, @{n='Resolution';e={$_.Bounds.Width.ToString()+'x'+$_.Bounds.Height}}, Primary

02What it does

Over remote desktop or in scripts, this answers "what resolution is that monitor actually running?" without opening Display settings, and reveals the full multi-monitor layout: each Screen object carries Bounds (position and size), WorkingArea (minus taskbar), and a Primary flag. There is no built-in PowerShell cmdlet for this, which is why the .NET class is the standard trick. The values are the raw pixel geometry Windows reports; DPI scaling factors are not applied, so a 150%-scaled 1920x1080 panel still reports 1920x1080. For changing resolution programmatically you'd need the ChangeDisplaySettings API — this one-liner is for reading, not writing.

03Risk

RiskLow risk

04Undo

✓No undo needed — this command does not change persistent state.

05Sources

  • Screen class (System.Windows.Forms)
    Microsoft Learn · vendor-doc · 2026-09-17
    Evidence: Documents the Screen class with AllScreens, PrimaryScreen, Bounds, and DeviceName members used to read display geometry.

Last verified: 2026-09-18 · Category: System & Settings

06Related solutions