私はこれを WMI で行いました。デバイス タイプを使用してドライブ文字を取得しました。簡略化された形式 (実際のスクリプトにはログ記録とエラー処理があります)。最初にデバイスマネージャー$deviceCaption
から取得しました:Win32_PnpEntity
$objs = @(Get-WmiObject -Query "select Caption,__RELPATH from Win32_PnpEntity where caption=""$deviceCaption""")
if ($objs.Length -eq 0) {
throw "MP3 Player is not connected"
} elseif ($objs.Length -gt 1) {
throw "Seem to be multiple MP3 players connected"
}
$relPath = $objs[0];
$objs = @(Get-WmiObject -Query "ASSOCIATORS OF {$relPath} where resultclass=Win32_DiskDrive")
$relPath = $objs[0].__RelPath;
$objs = @(Get-WmiObject -Query "ASSOCIATORS OF {$relPath} where resultclass=Win32_DiskPartition")
$relPath = $objs[0].__RelPath;
$objs = @(Get-WmiObject -Query "ASSOCIATORS OF {$relPath} where resultclass=Win32_LogicalDisk")
$relPath = $objs[0].__RelPath;
Write-Debug "RelPath #4: $($objs[0].__RelPath), drive: $($objs[0].DeviceID)"
$objs[0].DeviceID
その最後の式は、次のようなドライブ名を返しますQ:
(コロンまで含まれます)。
これは、デバイスに単一のパーティションを持つ単一のディスクがあることを前提としていることに注意してください。