Bonjour à tous,
Voici une fonction qui vous permettra de tester si un périphérique est connecté sur un poste de travail.
Cette fonction retourne les caractéristiques du périphérique si il est trouvé, sinon elle ne renvoie rien.
Le critère de recherche est un ID plug’n’play ou une liste d’IDs plug’n’play compatibles avec ce périphérique.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | function Search-Device { Param ( [Parameter(Mandatory=$true,ValueFromPipeline=$false,Position=0)][String[]]$PnpIDs ) $devices = $device = $FoundDevice = $null # On dresse la liste des pépriphériques connectés $devices = Get-WmiObject -Class Win32_PnpEntity | Sort-Object -Property Caption # On cherche dans cette liste si un périphérique contient l'ID plug'n'play recherché foreach ($device in $devices) { # On construit la liste des IDs plug'n'play compatibles $CompatibleIDs = $null if ($device.HardwareID.Count -gt 0) { $CompatibleIDs = $device.HardwareID } if ($device.CompatibleID.Count -gt 0) { $CompatibleIDs += $device.CompatibleID } # On cherche l'ID plug'n'play parmi la liste if ($CompatibleIDs -ne $null) { foreach ($PnpID in $PnpIDs) { if ($CompatibleIDs.Contains($PnpID) -eq $true) { $FoundDevice = $device break } } } } if ($FoundDevice -ne $null) { Write-host "Périphérique trouvé" -ForegroundColor Green Write-Output $FoundDevice } else { Write-Host "Périphérique non trouvé" -ForegroundColor Yellow Write-Output $null } } |
Exemples d’utilisation :
1 | $Device = Search-Device -PnpIDs @('PCI\VEN_8086&DEV_0166&REV_09','PCI\VEN_8086&CC_030000') |
Enjoy 😉