会社で「どのデバイスがどのCOMポートを使っているか調べる方法ない?」という質問があったので、PowerShell+WMIでできるよ!とワンライナーで書いてみました。

PS>Get-WmiObject -Class Win32_SerialPort | Format-List Caption,ProviderType

これではUSBシリアルとWINモデムが見えない〜というコメント。うーむ、伝統的なシリアルポートじゃないとWin32_SerialPortクラスは使えないのか。ということで、こんなコード。手元には複数のCOMポートがあるマシンがないので、確認できてないのですが..。

PS>Get-WmiObject -Class Win32_PnPSignedDriver -Filter "FriendlyName LIKE '%COM%'" | Select-Object -Property FriendlyName;

実際はFriendlyNameだけじゃなくて、HardWareIDをWin32_PnPDeviceやWin32_PnPEntryとつきあわせてみればいいのだろうけれど、まだワンライナーなPowerShellスクリプトしか書けない私には無理orz。