给定一个虚拟磁盘,获取其所属的池

给定一个虚拟磁盘,获取其所属的池

我有这个怪物:

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我已经尝试过.SerialNumberUniqueId多个对象(VolObj,,ParObj和)但是这些要么是空的DiskObjPsDriveObj要么返回错误的ID(这些对象的ID要么是,vol***因为我在EC2实例上运行它,要么是格式为{...}),所以if永远不会是真的。

有没有直接的方法可以实现这一点?

答案1

以下内容可帮助发帖者解决他的问题:

Get-VirtualDisk -FriendlyName "VDisk01" | Get-StoragePool

参考:

相关内容