web-dev-qa-db-ja.com

PowershellのUSBドライブの一意の識別子

Win32_volumeクラスのドキュメントによると ここ デバイスマネージャの下に表示されるデバイス名は、win32_volumeのプロパティとして使用できません。 SerialNumberプロパティはデバイスに固有ですか、それともシステムにのみ固有ですか?システムに対してのみ、ポータブルスクリプトを作成するためにどのプロパティを探す必要がありますか?

1
jamesson

SerialNumberはあなたを正しく見るでしょう。 DeviceIDプロパティも有望に見えましたが、それは1つのシステムでのみ静的です。

テストするために、2つのUSBドライブを挿入し、PowerShellで次のコマンドを実行しました。

Get-WmiObject -Class Win32_Volume | select Name, DeviceID, SerialNumber

初期出力は次のようになりました。

Name     DeviceID                                            SerialNumber
----     --------                                            ------------
J:\      \\?\Volume{56f4971c-28d3-11e5-8298-10604b833008}\   1893178287
H:\      \\?\Volume{56f496cc-28d3-11e5-8298-10604b833008}\   3930884954

ドライブ文字を交換することを期待して、両方を取り出して逆の順序で再挿入しましたが、保持しましたが、PowerShell出力の位置を交換しました。 (DeviceIDとSerialNumberは同じであることに注意してください。)

Name     DeviceID                                            SerialNumber
----     --------                                            ------------
H:\      \\?\Volume{56f496cc-28d3-11e5-8298-10604b833008}\   3930884954
J:\      \\?\Volume{56f4971c-28d3-11e5-8298-10604b833008}\   1893178287

最後に、スティックを別のコンピューターに挿入しました。deviceIdは異なりますが、シリアル番号は同じままです。

Name     DeviceID                                            SerialNumber
----     --------                                            ------------
E:\      \\?\Volume{603a0c09-2674-11e5-b1db-0050569a754c}\   3930884954
H:\      \\?\Volume{603a0c15-2674-11e5-b1db-0050569a754c}\   1893178287
2
Windos