Powershell 多值比较
Powershell Multiple values comparison
我使用
在我的 VM 上获取可用的原始磁盘
$availDisks = Get-PhysicalDisk -CanPool $true
$availDisks 包含 3 个 RAW 磁盘
我想有效地比较磁盘的大小,如果它们大小相同,则对它们进行条带化。
$availDisks.Size 给出了 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的组(即相同Size的磁盘) ), 然后输出每个过滤后的对象。如果您没有从中得到任何输出,则表示磁盘的大小不同。
在磁盘大小上使用 Select-Object -Unique
来检查是否只有一个唯一值。如果有任何其他值,则说明您没有磁盘或 non-equal 大小的磁盘。
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
}
我使用
在我的 VM 上获取可用的原始磁盘$availDisks = Get-PhysicalDisk -CanPool $true
$availDisks 包含 3 个 RAW 磁盘 我想有效地比较磁盘的大小,如果它们大小相同,则对它们进行条带化。
$availDisks.Size 给出了 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的组(即相同Size的磁盘) ), 然后输出每个过滤后的对象。如果您没有从中得到任何输出,则表示磁盘的大小不同。
在磁盘大小上使用 Select-Object -Unique
来检查是否只有一个唯一值。如果有任何其他值,则说明您没有磁盘或 non-equal 大小的磁盘。
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
}