【发布时间】:2017-06-19 09:53:45
【问题描述】:
我目前的项目有点麻烦。我有两个数组 - 第一个数组包含磁盘大小的参考值:
$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 语句,但我无法根据需要处理数据 - 我需要根据所需值检查给定值,如果它更小,请告诉我。如何根据需要再次比较这些值?基本上是“SideIndicator 为 且 DeviceID 等于 DeviceID 的对象比较”。如何将其转换为正确的代码?
【问题讨论】:
-
请不要将答案编辑成问题。如果您自己找到了解决方案:将其发布为您自己的答案。如果您希望改进您的代码:在Code Review 上发布问题。
-
感谢您的眨眼 - wilco。
标签: arrays powershell