我想从多个服务器中提取可用的磁盘空间,并用低磁盘空间标记值(例如,<20GB)。我无法标记低值。
要拉磁盘空间,我运行
$Array = gwmi win32_logicaldisk -ComputerName ComputerName | Select DeviceId, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}
按预期返回数据;
DeviceId Size FreeSpace
-------- ---- ---------
A: 0 0
C: 79.9 14.3
D: 701 72.76
Z: 0 0
然后我可以查询 $Array.Freespace 以获取以下内容;
0
14.3
72.76
0
由于我想在此列表中标记任何小于 20 的值,因此我尝试运行以下代码;
ForEach ($Value IN $Array.FreeSpace)
{IF ($Value -lt 20) {$Value = "WARNING"}
但是,运行此操作后,我的数组没有任何变化。我相信问题在于$Value = "Warning"
- 这是更改 ForEach 循环中每个单独值的正确方法吗?
作为最终结果,我希望结果在查询时显示如下$Array
:
DeviceId Size FreeSpace
-------- ---- ---------
A: 0 WARNING
C: 79.9 WARNING
D: 701 72.76
Z: 0 WARNING
非常感谢任何帮助,谢谢。
我认为您不能以您尝试的方式设置数组子项。试试这种方法。
处理引用 Freespace 值的每个项目。