Eu tenho essa monstruosidade:
Get-Volume | ForEach-Object {
$VolObj = $_
$ParObj = Get-Partition | Where-Object { $_.AccessPaths -contains $VolObj.Path }
$DiskObj = Get-Disk | Where-Object { $_.Number -eq $ParObj.DiskNumber }
$PsDriveObj = Get-PSDrive -PSProvider FileSystem | Where-Object { $_.Name -contains $VolObj.DriveLetter }
Get-StoragePool -IsPrimordial $false | ForEach-Object {
$pool = $_
Get-PhysicalDisk -StoragePool $pool | ForEach-Object {
$disk = $_
if ($disk.UniqueId -eq $volume_id) {
$pool_id = $pool.UniqueId
}
}
}
...
}
O problema com este pedaço de código está na linha if ($disk.uniqueid -eq $volume_id)
.
Em vez de $volume_id
tentei .SerialNumber
e UniqueId
dos vários objetos ( VolObj
, e ) ParObj
, mas eles estão vazios ou retornam o ID errado (os IDs desses objetos são desde que eu o executo em uma instância do EC2 ou no formato de ), então o nunca é verdade.DiskObj
PsDriveObj
vol***
{...}
if
Existe uma maneira direta de conseguir isso?
O seguinte ajudou o pôster com seu problema:
Referências: