Powershell多值比较



我使用获取虚拟机上可用的原始磁盘

$availDisks = Get-PhysicalDisk -CanPool $true

$availDisks包含3个RAW磁盘我想有效地比较磁盘的大小,如果它们的大小相同,就对它们进行条带化。

$availableDisks。大小提供了3个磁盘的输出,但我需要比较它们中的每一个。

我使用的方法是

$size = $availDisks[0].size
foreach($disk in $availDisks){
if($disk.size -eq $size){
Write-Host "The disk is equal to the desired size"
continue with the disk striping
}else{
Write-Error "One of the disks is not matching the size"
Do something else
}
}

有没有更有效的方法?

您可以使用Group-Object针对对象的Size属性:

Get-PhysicalDisk -CanPool $true | Group-Object Size |
Where-Object Count -GT 1 | ForEach-Object Group

根据Size属性的值对对象进行分组,筛选Count大于1的组(即大小相同的磁盘(,然后输出每个筛选的对象。如果您没有从中得到任何输出,则意味着磁盘具有不同的大小。

在磁盘大小上使用Select-Object -Unique来检查是否只有一个唯一值。如果有任何其他值,则表示没有磁盘或磁盘大小不相等。

if( @( $availDisks.Size | Select-Object -Unique ).Count -ne 1) {
Write-Error "One of the disks is not matching the size"
# Do something else
} else {
Write-Host "The disks are equal to the desired sizing"
# Continue with the disk striping
}

相关内容

  • 没有找到相关文章

最新更新