我有这个怪物:
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
}
}
}
...
}
这段代码的问题在于这一行if ($disk.uniqueid -eq $volume_id)
。
而不是$volume_id
我尝试了多个对象(、和) ,但这些对象要么是空的,要么返回错误的 ID(这些对象的 ID 要么是因为我在 EC2 实例上运行它,要么是格式为),所以从来都不是真的。.SerialNumber
UniqueId
VolObj
ParObj
DiskObj
PsDriveObj
vol***
{...}
if
有没有一种简单的方法可以实现这一目标?
以下帮助海报解决了他的问题:
参考: