IF Funktion
Hallo liebe Community,
ich habe da ein Problem in meinem Skript..
get-WMIObject Win32_LogicalDisk -filter "name='c:'"| ForEach {$_.name, [math]::truncate($_.freespace/1GB)}
if ( $_.freespace -gt 10)
{"The value is greater than 10."}
else
{"The value is less than 10."
#write-eventlog -logname Application -source LANLINE -eventID 1 -entrytype Information -message "The value is less than 10 GB "
}
Dieses Skript soll mir ausgeben ob meine C Festplatte mehr oder weniger als 10 GB haben und anschließen falls es weniger als 10 GB sind ein Ereignissprotokoll erstellen.
Die IF Funktion, packt aber nicht richtig, da ich denke sie die Zahl von der gwmi Befehl nicht erkennt.
Oder denke ich gerade falsch?
Mit freundlichen Grüßen
prorox
ich habe da ein Problem in meinem Skript..
get-WMIObject Win32_LogicalDisk -filter "name='c:'"| ForEach {$_.name, [math]::truncate($_.freespace/1GB)}
if ( $_.freespace -gt 10)
{"The value is greater than 10."}
else
{"The value is less than 10."
#write-eventlog -logname Application -source LANLINE -eventID 1 -entrytype Information -message "The value is less than 10 GB "
}
Dieses Skript soll mir ausgeben ob meine C Festplatte mehr oder weniger als 10 GB haben und anschließen falls es weniger als 10 GB sind ein Ereignissprotokoll erstellen.
Die IF Funktion, packt aber nicht richtig, da ich denke sie die Zahl von der gwmi Befehl nicht erkennt.
Oder denke ich gerade falsch?
Mit freundlichen Grüßen
prorox
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 284843
Url: https://administrator.de/contentid/284843
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
17 Kommentare
Neuester Kommentar
get-WMIObject Win32_LogicalDisk -filter "name='c:'"| ?{([math]::truncate($_.freespace/1GB)) -lt 10} | %{write-eventlog -logname Application -source LANLINE -eventID 1 -entrytype Information -message "The value of $($_.Name) is less than 10 GB"}
Gruß grexit
Den EventlogCode habe ich nur von dir übernommen, musst du selber korrigieren ... Wie der Fehler schon sagt, die Quelle (LANLINE) wurde nicht gefunden ! Also eine existierende nehmen oder anlegen ! Einfach mal die Doku zu write-eventlog studieren, sollte doch nicht so schwer sein ...ein bißchen mitdenken musst du schon ...
Beispiel:
Lesen und verstehen: How to Use PowerShell to Write to Event Logs
Beispiel:
# Neue Quelle "einmalig" erstellen
New-EventLog –LogName Application –Source "LANLINE"
# Eintrag ins Eventlog schreiben
Write-Eventlog -LogName Application -Source LANLINE -EventId 1 -EntryType Warning -Message "ACHTUNG"
Lesen und verstehen: How to Use PowerShell to Write to Event Logs
Zitat von @ProRox:
Habe allerdings den Filter auf -filter "DriveType=3" gesetzt das er mir alle Physikalischen Festplatten anzeigt (ohne Netzwerkplatten)
Jetzt ist meine Frage kann ich den verschiedenen Platten verschiedene Grenzwerte also -lt 10, 20, 30 GB geben oder können nur alle gleich bleiben?
Kein Problem ..Habe allerdings den Filter auf -filter "DriveType=3" gesetzt das er mir alle Physikalischen Festplatten anzeigt (ohne Netzwerkplatten)
Jetzt ist meine Frage kann ich den verschiedenen Platten verschiedene Grenzwerte also -lt 10, 20, 30 GB geben oder können nur alle gleich bleiben?
gwmi Win32_LogicalDisk -Filter "DriveType=3" | %{
$freespace = $_.Freespace
$message = $null
switch($_.DeviceID){
'C:'{
if ($freespace -lt 10GB){$message = "C: hat weniger als 10GB"}
}
'D:'{
if ($freespace -lt 20GB){$message = "D: hat weniger als 20GB"}
}
'E:'{
if ($freespace -lt 30GB){$message = "E: hat weniger als 30GB"}
}
}
if ($message){
Write-Eventlog -LogName Application -Source LANLINE -EventId 1 -EntryType Warning -Message $message
}
}
Nö, aber du musst halt wissen welches Laufwerk welche Begrenzung bekommen soll, das wird im Beispiel halt anhand der LW-Buchstaben gemacht. Wie du das regeln willst ist mir leider nicht bekannt!!
Zitat von @ProRox:
Okay, dann lasse ich es so
aber irgendwie packt die -lt Zeile nicht, da mein C Laufwerk genug GB hat, bzw mehr als
Ist ja klar, denn du hast die Angabe GB hinter der Zahl in deiner Variablen vergessen !!Okay, dann lasse ich es so
aber irgendwie packt die -lt Zeile nicht, da mein C Laufwerk genug GB hat, bzw mehr als
20GB wir in der Konsole automatisch zu Bytes expandiert
Du hast ja auch alles abgeändert und es nicht so gemacht wie ich oben gepostet habe, du brauchst Freespace nicht durch 1GB teilen !!!!!!!!
Freespace ist in Bytes und die Angabe 20GB wird ebenfalls zu Bytes expandiert, also ist eine Umrechnung Schwachsinn und nicht nötig !!
Freespace ist in Bytes und die Angabe 20GB wird ebenfalls zu Bytes expandiert, also ist eine Umrechnung Schwachsinn und nicht nötig !!
Doch, klappt hier einwandfrei, mach das ja tagtäglich ... So ne Kinderkacke ...
Wenn du es ja immer abänderst ohne zu wissen was du da machst kein Wunder das es bei dir nicht klappt...sorry
Schau mal ganz genau hin ... dann findest du deinen Fehler.
Wenn du es ja immer abänderst ohne zu wissen was du da machst kein Wunder das es bei dir nicht klappt...sorry
Schau mal ganz genau hin ... dann findest du deinen Fehler.
Zitat von @ProRox:
hab die GB wieder hinzugefügt hinter den zahlen und durch 1GB auch schon etnfernt, allerdings schreibt er mir immer noch alle eventlogs rein..
Kopiere doch bitte meinen Code von oben, dann findest du deinen Fehler ... dir fehlt die Variablendeklaration innerhalb der Schleife ...hab die GB wieder hinzugefügt hinter den zahlen und durch 1GB auch schon etnfernt, allerdings schreibt er mir immer noch alle eventlogs rein..
Hat dein Browser einen Knacks ?
Zitat von @ProRox:
Ja jetzt passts, aber warum trägt er mir denn zwei mal laufwerk E ein ins Eventlog
Ok dann hast du vermutlich eine ältere Powershell, habs dafür oben mal angepasst.Ja jetzt passts, aber warum trägt er mir denn zwei mal laufwerk E ein ins Eventlog