我目前在当前项目中遇到了一些问题。我有两个阵列 - 第一阵列包含用于磁盘大小的参考值:将给定尺寸与所需尺寸进行比较并显示不匹配
$RequiredDisks0 = New-Object System.Object
$RequiredDisks0 | Add-Member -Type NoteProperty -Name "DeviceID" -Value "C:"
$RequiredDisks0 | Add-Member -Type NoteProperty -Name "SizeGB" -Value "80"
第二阵列包含底层系统的磁盘信息:
$SystemDisks = Get-WmiObject Win32_LogicalDisk |
Where {$_.DriveType -eq 3} |
select DeviceID,
@{Name="Size(GB)";Expression={[decimal]("{0:N0}" -f ($_.Size/1gb))}}
我想这样做,是检查给定的阵列对参考数组,以查看是否有给定的磁盘比所需的小。我发现我可以用
Compare-Object -ReferenceObject $RequiredDisks -DifferenceObject $SystemDisks -Property SizeGB,DeviceID
比较阵列和如下确实我收到的区别在哪里我有麻烦
SizeGB DeviceID SideIndicator
------ -------- -------------
99 C: =>
15 H: =>
100 I: =>
80 C: <=
25 H: <=
200 I: <=
正在与输出。我想达到的结果是一个输出,说明“磁盘n比所需的小”。我知道所有带侧指示器“< =”的值都是所需的值,所有带“=>”侧指示器的值都是给定的值。我已经尝试了foreach
声明,但我无法根据需要处理数据 - 我需要根据所需值检查给定值,如果它较小,请告诉我。我如何再次根据需要比较这些值?基本上是一个“foreIndicator为< =的比较对象,其中SideIndicator =>和DeviceID等于DeviceID的foreach对象。我如何将它转换为正确的代码?
请不要编辑答案变成一个问题。如果您自己找到解决方案:将其作为您自己的答案发布。如果你想改进你的代码:在[代码评论](https://codereview.stackexchange.com/)上发布一个问题。 –
感谢眨眼 - 威科。 –