我使用获取虚拟机上可用的原始磁盘
$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
}