Come utilizzare PowerShell per estrarre, e filtrare, la lista delle periferiche presenti nel computer (aggiornato: settembre 2025)
- a cura di: crazy.cat
- Letture:
- Aggiornato: ieri alle 07:37
- Pubblicato: un attimo fa
Se vogliamo estrarre una lista di tutte le periferiche configurate nel sistema operativo possiamo utilizzare il cmdlet Get-PnpDevice
di PowerShell, dato che le informazioni possono essere molte, e non tutte interessarci, vediamo ora come fare una serie di filtri per avere dei risultati più ridotti.
Se ci serve avere la lista delle periferiche USB attualmente collegate al computer si deve usare questo comando:
Get-PnpDevice -PresentOnly | Where-Object {$_.InstanceId -match '^USB'} | Select-Object Status,Present,Class,FriendlyName,Service,InstanceId | Format-Table -AutoSize -Wrap
Se vogliamo vedere solo i monitor presenti, basta sostituire USB con Display, o con qualsiasi altra categoria presente nella parte iniziale dell'IstanceId:
Get-PnpDevice -PresentOnly | Where-Object {$_.InstanceId -match '^Display'} | Select-Object Status,Present,Class,FriendlyName,Service,InstanceId | Format-Table -AutoSize -Wrap
Il seguente comando permette di filtrare le periferiche in base al loro FriendlyName e al match che contiene Realtek o nviadia.
Get-PnpDevice -PresentOnly | Where-Object {$_.FriendlyName -match '^realtek'} | Select-Object Status,Present,Class,FriendlyName,Service,InstanceId | Format-Table -AutoSize -Wrap
Anche con un filtro in base a Class, nel match poi possiamo estrarre le schede audio, AudioEndpoint
, o i dischi fissi, DiskDrive
, e i dischi esterni o le pendrive:
Get-PnpDevice | Where-Object {$_.Class -match '^AudioEndpoint'} | Select-Object Status,Present,Class,FriendlyName,InstanceId | Format-Table -AutoSize -Wrap
Quando colleghiamo, e poi stacchiamo, qualcosa al computer, ne rimane sempre una traccia, solo che il loro Status
sarà Unknown
e Present
sarà False
.
Il comando da usare per vedere tutte le periferiche USB configurate sarà questo:
Get-PnpDevice | Where-Object {$_.InstanceId -match '^USB'} | Select-Object Status,Present,Class,FriendlyName,Service,InstanceId | Format-Table -AutoSize -Wrap
Se volessimo fare pulizia delle periferiche non più presenti è possibile consultare questo articolo.
Se non ci interessa vedere tutti i dati della periferica possiamo modificare la parte del comando che li contiene Select-Object Status,Present,Class,FriendlyName,Service,InstanceId
, così da avere una visualizzazione ridotta:
Get-PnpDevice | Where-Object {$_.InstanceId -match '^USB'} | Select-Object Status,Present,Class,FriendlyName | Format-Table -AutoSize -Wrap
Se abbiamo bisogno di salvare la lista delle periferiche dobbiamo aggiungere | Out-File -FilePath X:\ListaPeriferiche.txt
al comando che stiamo utilizzando, al posto della X va indicato il percorso dove salvare il file di testo.
Il comando completo diventa simile a questo e a video non vedremo nulla (salvo la presenza di errori):
Get-PnpDevice -PresentOnly | Where-Object {$_.InstanceId -match '^USB'} | Select-Object Status,Present,Class,FriendlyName,Service,InstanceId | Format-Table -AutoSize -Wrap | Out-File -FilePath d:\ListaPeriferiche.txt
L'output del commando sarà salvato nel file di testo che ha generato PowerShell.
Per ulteriori esempi, e possibilità di filtrare i dati, potete fare riferimento a questa pagina Microsoft.