Misdemeanor
Lieutenant Pro
- Registriert
- Mai 2009
- Beiträge
- 558
Hallo zusammen.
Ich bin gerade dabei, eine (relativ einfache) Auswertung von Festplattenspeicher zu schreiben. Weil ich mit gefundenen Lösungen nicht zufrieden war und sich außerdem der Drang in mir regte, es selbst einmal zu versuchen, habe ich mich mal dran gesetzt und bin auf ein Problem gestoßen.
Leider funktioniert mein Script nämlich nur dann, wenn ich mehr als einen Datenträger auf dem PC auswerte.
Zur Auswertung selber nutze ich übrigens die Klasse Win32_LogicalDisk, um mir die Daten zu den Datenträgern anzeigen zu lassen.
Das ist, was ich bisher versucht habe:
Das Ergebnis (im PowerShell ISE) - wie zu erwarten - sieht so aus:
![2014-01-15_105429.jpg 2014-01-15_105429.jpg](https://pics.computerbase.de/forum/attachments/317/317674-b96712f33416cba2b950c36d3c06d801.jpg?hash=uWcS8zQWy6)
Seltsam wird es nun, wenn ich Laufwerk E: entferne (es handelt sich um eine USB-Festplatte) und nur noch ein Laufwerk vorhanden bleibt. Das Script liefert dann kein Ergebnis mehr, auch nicht für Laufwerk C:.
Die Prüfung des Arrays ergibt, dass es keine Einträge enthält. Das prüfe ich mit dem Code in Zeile #9, hier wird ein "FALSE" ausgegeben, d.h. das Array ist nicht größer 0 und damit leer!
Wieso also? Wenn ich nur eine Platte C: auswerte, und dafür
nutze, erhalte ich doch auch ein Ergebnis. Hä? Kann mir das jemand genauer erläutern und mir sagen, wo der Denk- und Code-Fehler ist?
Ich hoffe, ich konnte mein Problem verständlich darstellen und würde mich über konstruktive Rückmeldung freuen.
Danke & MfG
Ich bin gerade dabei, eine (relativ einfache) Auswertung von Festplattenspeicher zu schreiben. Weil ich mit gefundenen Lösungen nicht zufrieden war und sich außerdem der Drang in mir regte, es selbst einmal zu versuchen, habe ich mich mal dran gesetzt und bin auf ein Problem gestoßen.
Leider funktioniert mein Script nämlich nur dann, wenn ich mehr als einen Datenträger auf dem PC auswerte.
Zur Auswertung selber nutze ich übrigens die Klasse Win32_LogicalDisk, um mir die Daten zu den Datenträgern anzeigen zu lassen.
Das ist, was ich bisher versucht habe:
Code:
Clear-Host
# Angabe Schwellenwert in %
$Schwellenwert = 20
# Array aller physikalischen Laufwerke erstellen
$ArrayLaufwerke = Get-WmiObject Win32_LogicalDisk | Where-Object DriveType -eq 3
#$ArrayLaufwerke.count -gt 0
# Durchlauf des Arrays, Index beachten
for ($i = 0; $i -lt $ArrayLaufwerke.length; $i++) {
# Gesamtspeicher, Restspeicher, Berechnung Prozent Restspeicher
$LaufwerkGesamtSpeicher = [System.Math]::round([int]($ArrayLaufwerke[$i].Size/1024/1024/1024),2)
$LaufwerkFreierSpeicher = [System.Math]::round([int]($ArrayLaufwerke[$i].FreeSpace/1024/1024/1024),2)
$LaufwerkFreiInProzent = [System.Math]::round(100/($LaufwerkGesamtSpeicher/$LaufwerkFreierSpeicher),2)
# Auflisten der Laufwerke im Array
Write-Host Laufwerk $ArrayLaufwerke[$i].DeviceID -ForegroundColor Green
Write-Host Gesamt: $LaufwerkGesamtSpeicher GByte
Write-Host Frei: $LaufwerkFreierSpeicher GByte "($LaufwerkFreiInProzent %)"
if ($LaufwerkFreiInProzent -lt $Schwellenwert) {
Write-Host "Achtung! " -ForegroundColor Red -NoNewline; Write-Host Der Festplattenplatz liegt unter $Schwellenwert %!
}
# Leerzeile einfügen
Write-Host
}
Das Ergebnis (im PowerShell ISE) - wie zu erwarten - sieht so aus:
![2014-01-15_105429.jpg 2014-01-15_105429.jpg](https://pics.computerbase.de/forum/attachments/317/317674-b96712f33416cba2b950c36d3c06d801.jpg?hash=uWcS8zQWy6)
Seltsam wird es nun, wenn ich Laufwerk E: entferne (es handelt sich um eine USB-Festplatte) und nur noch ein Laufwerk vorhanden bleibt. Das Script liefert dann kein Ergebnis mehr, auch nicht für Laufwerk C:.
Die Prüfung des Arrays ergibt, dass es keine Einträge enthält. Das prüfe ich mit dem Code in Zeile #9, hier wird ein "FALSE" ausgegeben, d.h. das Array ist nicht größer 0 und damit leer!
Wieso also? Wenn ich nur eine Platte C: auswerte, und dafür
Code:
Get-WmiObject Win32_LogicalDisk | Where-Object DriveType -eq 3
Ich hoffe, ich konnte mein Problem verständlich darstellen und würde mich über konstruktive Rückmeldung freuen.
Danke & MfG