Ändern von Werten in einem Array

Ändern von Werten in einem Array

Ich möchte den verfügbaren Speicherplatz von mehreren Servern abrufen und die Werte mit geringem Speicherplatz (z. B. <20 GB) kennzeichnen. Ich habe Probleme mit der Kennzeichnung der niedrigen Werte.

Um den Speicherplatz zu beanspruchen, führe ich aus

$Array = gwmi win32_logicaldisk -ComputerName ComputerName | Select DeviceId, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}} 

Das gibt die Daten wie erwartet zurück;

DeviceId Size FreeSpace
-------- ---- ---------
A:          0         0
C:       79.9      14.3
D:        701     72.76
Z:          0         0

Dann kann ich $Array.Freespace nach Folgendem abfragen:

0
14.3
72.76
0

Da ich alle Werte unter 20 in dieser Liste kennzeichnen möchte, habe ich versucht, den folgenden Code auszuführen;

ForEach ($Value IN $Array.FreeSpace)
{IF ($Value -lt 20) {$Value = "WARNING"}

Nach der Ausführung gibt es jedoch keine Änderungen an meinem Array. Ich glaube, das Problem liegt darin $Value = "Warning": Ist dies die richtige Art, jeden einzelnen Wert in einer ForEach-Schleife zu ändern?

Als Endergebnis möchte ich, dass bei meiner Abfrage die folgenden Ergebnisse angezeigt werden $Array:

DeviceId Size FreeSpace
-------- ---- ---------
A:          0     WARNING
C:       79.9     WARNING
D:        701     72.76
Z:          0     WARNING

Jede Hilfe ist sehr willkommen, Danke.

Antwort1

Ich glaube nicht, dass Sie Array-Unterelemente auf die von Ihnen gewünschte Weise festlegen können. Versuchen Sie stattdessen diesen Ansatz.

> $Array = gwmi win32_logicaldisk -ComputerName ComputerName | Select DeviceId, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}

> $array.freespace
144.56
146.88
0
2198.05

> foreach ($Drive in $Array) {IF ($Drive.Freespace -lt 20) {$Drive.Freespace = "WARNING"}}

> $array.freespace
144.56
146.88
WARNING
2198.05

> $array

DeviceId    Size FreeSpace
--------    ---- ---------
C:        220.26    144.56
D:        244.14    146.88
E:             0   WARNING
P:       3071.87   2198.05

Arbeiten Sie jedes Element unter Bezugnahme auf den Freespace-Wert durch.

verwandte Informationen