如何获取没有Raw物理磁盘的VM并按Provisionedspace名称对这些VM进行排序?

时间:2018-10-31 09:35:41

标签: powershell vmware vsphere powercli

我需要获取按 provisionedspace 排序的VM列表,而且这些VM不应具有 RawPhysical 。我已经尝试了以下代码

 Get-Datastore -Name "$DSName" |  Get-VMHost | get-vm | Select-Object -Property  Name, Provisionedspacegb | sort -Property Provisionedspacegb | select -First 3 | Select Name

以上用于按 provisionedspacegb

进行VM列表排序的方法
Get-Datastore -Name "$DSName" | Get-VMHost | Get-VM | Get-HardDisk | Where-Object {$_.DiskType -eq "RawPhysical" } | Select Parent

上面的用于获取没有物理磁盘

的VM列表

我需要在单行powershell代码中使用这两个代码。

1 个答案:

答案 0 :(得分:1)

每当与许多管道运营商合作时,请退后一步,考虑采用除法和权衡法。也就是说,将脚本分成更多易于管理的部分。我没有可用的VMWare,但是请尝试以下想法:

# Get a list of all the VMs
$allVms= Get-Datastore -Name "$DSName" |  Get-VMHost | get-vm

# Array for those we actually want
$rawVms = @()

# Iterate the VM collection. Look for such VMs that have whatever disk config    
foreach($vm in $allVms) {
    # This filtering statement is likely to be incorrect. Tune accordingly
    if($vm | get-harddisk | ? { $_.DiskType -eq "RawPhysical" }).Count -gt 0 {

        # If the VM has raw disk, add it into desired VMs list
        $rawVms += $vm
    }
}

# Do stuff to the filtered collection
$rawVms | Select-Object -Property  Name, Provisionedspacegb | ` # ` = line break for readability
    sort -Property Provisionedspacegb | select -First 3 | Select Name

实际语法可能会有所不同。