Desejo extrair o espaço em disco disponível de vários servidores e sinalizar os valores com pouco espaço em disco (<20 GB para fins de exemplo). Estou tendo problemas para sinalizar os valores baixos.
Para puxar o espaço em disco, eu corro
$Array = gwmi win32_logicaldisk -ComputerName ComputerName | Select DeviceId, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}
Que retorna os dados conforme o esperado;
DeviceId Size FreeSpace
-------- ---- ---------
A: 0 0
C: 79.9 14.3
D: 701 72.76
Z: 0 0
Posso então consultar $Array.Freespace para o seguinte;
0
14.3
72.76
0
Como desejo sinalizar qualquer valor menor que 20 nesta lista, tentei executar o código abaixo;
ForEach ($Value IN $Array.FreeSpace)
{IF ($Value -lt 20) {$Value = "WARNING"}
No entanto, não há alterações no meu array depois de executar isso. Acredito que o problema esteja dentro $Value = "Warning"
- essa é a maneira correta de alterar cada valor individual em um ForEach Loop?
Como resultado final, quero que os resultados mostrem o seguinte quando eu consultar $Array
:
DeviceId Size FreeSpace
-------- ---- ---------
A: 0 WARNING
C: 79.9 WARNING
D: 701 72.76
Z: 0 WARNING
Qualquer ajuda muito apreciada, obrigado.
Não acho que você possa definir subitens de matriz da maneira que está tentando. Em vez disso, tente esta abordagem.
Trabalhe em cada item referenciando o valor Freespace.