1

gwmi win32_volumeボリュームの詳細を教えてくれます。

gwmi win32_diskdriveディスク署名を提供します。

Powershell を使用して特定のボリューム GUID のディスク署名を取得するにはどうすればよいですか (ボリューム GUID は次のようになります\\?\Volume{2e5e3ff7-fb5a-11e1-9924-80c16e6c465c}\か?

一部のボリュームがマウントされていない可能性があり、それらに関連付けられた文字がないため、使用Win32_LogicalDiskは私にとってオプションではありません。良い例はSystem Reserved、Windows 7 のパーティションです。

4

3 に答える 3

1

gwmi で必要なものが見つからなかったため、powershell から diskpart にアクセスしています。

この場合、gwmi win32_diskdrive で取得できるディスク署名を取得しています。

$volumeCommand = "list volume" | diskpart
 $Pattern = 'XXXbbbXXXX'
 $Volume
for($i=5; $i -le $volumeCommand.length; $i++)
{
write-host $volumeCommand[$i]
 $matched = @(Select-String -inputobject $volumeCommand[$i] -Pattern $Pattern)
    if($matched ) {
   $Volume=$volumeCommand[$i -1 ]
     break
   }
}

$columnToGet = 1
$volumeName = $Volume | 
   %{ $_.Split(" ",[StringSplitOptions]"RemoveEmptyEntries")[$columnToGet] }

$selectCommand = "sel volume " +$volumeName  
$uniqueid = "uniqueid disk"
write-host $selectCommand
$volumeuniqueidCommand =  $selectCommand , $uniqueid  | diskpart
write-host $volumeuniqueidCommand


$signature = $volumeuniqueidCommand[$volumeuniqueidCommand.length-3].trimStart("Disk ID: ")
write-host $signature
$signature = [CONVERT]::toint32($signature,16)
write-host $signature
于 2012-10-20T19:34:25.143 に答える
0

あなたはおそらくこのコードを探しています:

$StrComputer = 'COMPUTER_NAME'
$DeviceId = "X:"
$wmiLogicalDiskQuery = "ASSOCIATORS OF {Win32_LogicalDisk.DeviceID='" + $DeviceId + "'} where AssocClass = Win32_LogicalDiskToPartition";
$PhysicaldiskPartitionName = (gwmi -Query $wmiLogicalDiskQuery).Name;
$wmiPhysicalDiskQuery = "ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" + $PhysicaldiskPartitionName + "'} where AssocClass = Win32_DiskDriveToDiskPartition";
$PhysicaldiskDriveName = (gwmi -Query $wmiPhysicalDiskQuery -Comp $StrComputer).DeviceID
$DiskSignature = (gwmi Win32_DiskDrive -Comp $StrComputer | where-object {$_.DeviceID -eq $PhysicaldiskDriveName} ).Signature

これは、ここから少し変更されたバージョンです。

于 2012-10-19T21:44:46.543 に答える
0

最善の (そして唯一の IMO) 方法は、Sysinternalsから使用することだと思いますDiskExt.exe

PowerShellを使用してDiskExt出力を解析し、ボリュームに関連するディスクドライブを見つけてから、その値win32_volumeを選択するために使用できますsignature

于 2012-10-19T20:03:26.503 に答える