Need to track monitor assets without physically checking each screen? This PowerShell command can remotely retrieve the serial number of connected monitors, often hidden from standard Device Manager views.

The Fix

# Replace 'RemoteComputerName' with the actual hostname or IP of the remote machine
$computerName = "RemoteComputerName"

Get-WmiObject WmiMonitorID -Namespace root\wmi -ComputerName $computerName | ForEach-Object {
    $serialAscii = ($_.SerialNumberID | ForEach-Object {[char]$_}) -join ""
    [PSCustomObject]@{
        Manufacturer = ($_.ManufacturerName | ForEach-Object {[char]$_}) -join ""
        Name         = ($_.UserFriendlyName | ForEach-Object {[char]$_}) -join ""
        SerialNumber = $serialAscii
    }
}

Why it works

  • The WmiMonitorID WMI class (in the root\wmi namespace) exposes detailed information about connected monitors, including serial numbers and manufacturer names, which are stored as byte arrays and need to be converted to ASCII.

Verify

# Examine the output for 'SerialNumber'
  • The output will display the Manufacturer, UserFriendlyName, and the decoded SerialNumber for each monitor detected on the remote machine.

Notes

  • Requires winrm service to be running on the target computer.
  • Requires current user to have administrative privileges on the remote machine.
  • Remote PowerShell (WinRM) must be enabled on the target (Enable-PSRemoting).
  • Not all monitors expose their serial number via WMI, but most modern ones do.

Techworks Blog