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

FriendlyName
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

Class
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

Periferiche non collegate
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.

Ridurre l'output
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

Creare file
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.