Uma solução possível é o seguinte script de shell de energia. A saída deve estar no formato JSON. O problema com essa solução é que ela depende do cmdlet get-partition. Este cmdlet foi introduzido após o Windows 2008R2. Isso funcionaria como uma solução se o cmdlet get-partition fosse portado para o Windows 2008R2 ou se eu encontrasse uma solução que faria a mesma coisa no Windows 2008R2. Embora não seja uma solução completa, não se encaixou como comentário.
$CimPartInfo = get-partition
"{"
foreach ($CimPart in $CimPartInfo) {
if ($CimPart.Guid -eq $null) {
$PartGUID = [regex]::match($CimPart.AccessPaths, 'Volume({[^}]+})').Groups[1].Value
}
else {
$PartGUID = $CimPart.Guid
}
"'"$PartGUID'": {"
"'"DiskId'": $($CimPart.DiskNumber),"
"'"PartitionId'": $($CimPart.PartitionNumber),"
"'"Type'": '"$($CimPart.Type)'","
"'"Size'": $($CimPart.Size),"
"'"Offset'": $($CimPart.Offset),"
"'"GUID'": '"$($CimPart.Guid)'","
$x = $CimPart.IsBoot
"'"Bootable'": $($x.ToString().ToLower()),"
"'"Status'": '"$($CimPart.OperationalStatus)'""
if ($CimPart -eq $CimPartInfo[-1]){ "}"}
else {"},"}
} #foreach CimPart
"}"