
物理デバイス オブジェクト名があります (例: "\Device\0000007c")。
Windows 7 では、デバイス マネージャーでシステム内のすべてのデバイスを 1 つずつ確認し、プロパティ ダイアログを開いて物理デバイス オブジェクト名のエントリを確認する以外に、その ID に対応するデバイスを見つけるにはどうすればよいですか?
私は見つけた物理デバイス オブジェクト (PDO) 識別子に基づいて Windows でデバイスを検索するしかし、それはちょっとした XY 問題であることが判明し、この質問には答えていません。
レジストリ (キー/値/データ) で文字列「0000007c」、「0000007C」、および DWORD 0x0000007C を検索してみましたが、デバイスに関連するものは見つかりませんでした。
以前の Windows では、デバイス マネージャーから完全なレポートを印刷できました (その後、検索できました) が、Windows 7 ではデバイス マネージャーにこのオプションはなくなりました。
答え1
解決
公式ドキュメントより:
バス ドライバーは、子デバイスが接続または切断されたことを検出すると、プラグ アンド プレイ (PnP) マネージャーに通知します。これに応じて、PnP マネージャーは、親デバイス (つまり、バス) に接続されている各子デバイスに対して物理デバイス オブジェクト (PDO) を作成するようにバス ドライバーに要求します。
必要な情報を取得するには、コマンド・プロンプト次のコマンドを実行します。
wmic path Win32_PnPSignedDriver where "pdo like '%0000007c'" get devicename,pdo
参考文献
答え2
もしこれが物理ディスク、次のPowershell Coreスクリプト行を使用して、不明瞭なディスクによって識別されている実際のディスクを特定できます。PDO名:
# Starting with a PDO name, likely copy-pasta'd from some obscure warning/error message
$pdo_name='\Device\0000005b'
# Step 1
$system_element_dev_id = Get-CimInstance Win32_PnPSignedDriver |
? {$_.PDO -eq $pdo_name} |
Select-Object -ExpandProperty DeviceID
# Step 2: Use the proceeds from the above transaction to identify the "Disk Number"
$phys_disk_num = Get-CimInstance Win32_PNPDevice |
? {[string]$_.SystemElement.DeviceID -eq $system_element_dev_id} |
Select-Object @{
n='disk_number';
e={[int]$_.SameElement.DeviceID.replace('\\.\PHYSICALDRIVE','')}
} |
Select-Object -expand disk_number
# Step 3: Profit! Get the info you were after
Get-PhysicalDisk | ? {$_.DeviceId -eq $phys_disk_num}
サンプル出力。シリアル番号は隠されており、一部の列/値は、恐ろしい水平スクロールバー:
Num FriendlyName SerialNumber MediaType CanPool OpStatus HealthStat Usage Size
--- ------------ ------------ --------- ------- -------- ---------- ----- ----
5 ST16000NM001G ZL123XYZ HDD False OK Healthy Auto-Sel 14.55 TB
上記のスクリプトをハッキングして、物理ディスク読者の課題として残しておきます。