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