Public/Hardware/Get-DisplayDevice.ps1
<#
Copyright © 2024 Integris. For internal company use only. All rights reserved. #> FUNCTION Get-DisplayDevice { <# .SYNOPSIS Retrieves and displays information about connected display devices. .DESCRIPTION This function collects detailed information about each connected display device, including model ID, model name, manufacturer, video input type, serial number, and year of manufacture. .PARAMETER MonitorInstances The collection of monitor instances retrieved from the WMIMonitorID class. .EXAMPLE Get-DisplayDevice This command retrieves and displays information about all connected display devices. .NOTES This function uses CIM instances to gather display device information and may require appropriate permissions to execute. #> [CmdletBinding()] PARAM ( ) $Results = @() $MonitorInstances = Get-CIMInstance -Class WMIMonitorID -Namespace root\wmi -ErrorAction SilentlyContinue | Select-Object InstanceName IF ($MonitorInstances.Count -ge 1) {} ELSE { $Results += New-Object PSObject -WarningAction SilentlyContinue -Property @{ PSTypeName = 'IntegrisPowerShell.DisplayDevice' ModelID = "Not Connected" ModelName = "Not Connected" Manufacturer = "Not Connected" VideoInput = "Not Connected" SerialNumber = "Not Connected" ManufacturerYear = "Not Connected" } RETURN $Results | Select-Object ModelID, ModelName, Manufacturer, VideoInput, SerialNumber, ManufacturerYear } $MonitorCount = 0 FOREACH ($MonitorInstance in $MonitorInstances) { $MonitorCount++ ### Hardware ID $HardwareID = ($MonitorInstance.InstanceName.Split('\'))[1] ### Manufacture Year $MonitorInfo = Get-CIMInstance WMIMonitorID -Namespace root\wmi | Where-Object { $_.InstanceName -eq $MonitorInstance.InstanceName } $ManufactureYear = "Unknown" $ManufactureYear = $MonitorInfo.YearOfManufacture ### Serial Number $SerialNumber = "Unknown" $SerialNumber = [System.Text.Encoding]::ASCII.GetString($MonitorInfo.SerialNumberID).Trim(0x00) $MonitorInfo = Get-CIMInstance WmiMonitorConnectionParams -Namespace root\wmi | Where-Object { $_.InstanceName -eq $MonitorInstance.InstanceName } ### Video Connector $VideoOutput = "Unknown" $VideoOutput = $MonitorInfo.VideoOutputTechnology Switch ($VideoOutput) { "0" { $VideoOutput = "VGA" } "1" { $VideoOutput = "S-Video" } "2" { $VideoOutput = "Composite_Video" } "3" { $VideoOutput = "Component_Video" } "4" { $VideoOutput = "DVI" } "5" { $VideoOutput = "HDMI" } "6" { $VideoOutput = "LVDS" } "7" { $VideoOutput = "Unknown" } "8" { $VideoOutput = "D_JPN" } "9" { $VideoOutput = "SDI" } "10" { $VideoOutput = "DisplayPort" } "11" { $VideoOutput = "DisplayPort" } "12" { $VideoOutput = "UDI" } "13" { $VideoOutput = "UDI" } "14" { $VideoOutput = "SDTV_Dongle" } "15" { $VideoOutput = "Miracast" } "16" { $VideoOutput = "Indirect_Wired" } default { $VideoOutput = "Unknown" } } $MonitorInfo = Get-PnpDevice | Where-Object { $_.PNPDeviceID -eq $MonitorInfo.InstanceName.Replace("_0","") } ### Vendor $MonitorManufacturer = "Unknown" $MonitorManufacturer = $MonitorInfo.Manufacturer $Results += New-Object PSObject -WarningAction SilentlyContinue -Property @{ PSTypeName = 'IntegrisPowerShell.DisplayDevice' Number = $MonitorCount ModelID = $HardwareID ModelName = $MonitorInfo.Name Manufacturer = $MonitorManufacturer VideoInput = $VideoOutput SerialNumber = $SerialNumber ManufacturerYear = $ManufactureYear } } RETURN $Results } New-Alias -Name Get-DisplayInfo -Value Get-DisplayDevice |