Detection script
$clientName = $env:COMPUTERNAME
#initialize output list
$output = @()
#TPM Detection
$tpm = Get-WmiObject -Namespace "Root\CIMV2\Security\MicrosoftTpm" -Class Win32_Tpm -ErrorAction SilentlyContinue
if ($tpm) {
$specString = $tpm.SpecVersion -join ' '
if ($specString -match '(\d+\.\d+)') {
$mainVersion = $matches[1]
$output += "TPM: Present $mainVersion"
} else {
$output += "TPM: Present (version unknown)"
}
} else {
$output += "TPM: Not Found"
}
#fingerprint Reader Detection (exclude Hello Face devices)
$fingerprintDevices = Get-PnpDevice -Class Biometric -Status OK -ErrorAction SilentlyContinue | Where-Object {
$_.FriendlyName -notmatch '(?i)(IR\s?Camera|RealSense|Depth\sCamera|Infrared\sCamera|Windows Hello|Facial Recognition|IR)'
}
#collect and sort fingerprint names
$fpNames = $fingerprintDevices | Select-Object -ExpandProperty FriendlyName | Sort-Object
if ($fpNames) {
$output += "Fingerprint Reader(s): $($fpNames -join ', ')"
} else {
$output += "Fingerprint Reader: Not Found"
}
#IR Camera Detection
$irCameraDevices = @()
#camera class (most reliable for hardware)
$irCameraDevices += Get-PnpDevice -Class Camera -Status OK -ErrorAction SilentlyContinue | Where-Object {
$_.FriendlyName -match '(?i)(IR\s?Camera|RealSense|Depth\sCamera|Infrared\sCamera|Windows Hello|Facial Recognition|IR)'
}
#biometric class (Windows Hello Face software device)
$irCameraDevices += Get-PnpDevice -Class Biometric -Status OK -ErrorAction SilentlyContinue | Where-Object {
$_.FriendlyName -match '(?i)(IR\s?Camera|RealSense|Depth\sCamera|Infrared\sCamera|Windows Hello|Facial Recognition|IR)'
}
#remove duplicates
$irCameraDevices = $irCameraDevices | Select-Object -Unique
#collect and sort IR camera names
$irNames = $irCameraDevices | Select-Object -ExpandProperty FriendlyName | Sort-Object
if ($irNames) {
$output += "IR Camera(s): $($irNames -join ', ')"
} else {
$output += "IR Camera: Not Found"
}
#final Output
Write-Output "Client: $clientName - $($output -join '; ')"