Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Teile der $error Variable in Log schreiben.

$
0
0

Hallo zusammen,

ich möchte auftretende Fehler der $error Variable innerhalb von scripten gerne in eine Logdatei schreiben. (Das untere script wird dann eine Funktion).

Es soll der Lesbarkeit halber aber nicht die gesamte $error Variable gespeichert werden. Nur die Zeit, ein Absatz, der Fehler und die “InvocationInfo.PositionMessage“ der Variable sollen pro Fehler gespeichert werden.

Das funktioniert auch schon recht gut, allerdings habe ich das Problem das array der “InvocationInfo.PositionMessages“ richtig unter die eigentliche Fehlermeldung zu schreiben. Es wird immer nur die erste PosittionMessage des arrays eingetragen. Die eigentlichen Fehlermeldungen hingegen werden vom letzten Fehler beginnend korrekt eingetragen .

  1. Kann mir hier jemand einen Hinweis geben was ich falsch mache?
  2.  G es eine Möglichkeit die Fehler plus dazugehöriger PositionMessage „rückwärts“, also mit dem ersten Fehler im script beginnend einzutragen? (Nicht so wichtig).
  3. Ist das so überhaupt der richtige Ansatz, oder wie schreiben die Profis hier ihre Fehlermeldungen in eine Logdatei?

Danke für euren Input!

Sönke

$error. Clear() # Evtl. vorhandene Fehler löschen, wird entfernt, wenn script funktioniert

# Anfang Testscript, welches Fehler erzeugt. Nur ein Beispiel, Error-Log soll für jegliche Form von scripten laufen
Copy-Item c:\gib\es\nicht d:\bla
Copy-Item c:\gib\es\auch\nicht d:\bla\bla
Copy-Item c:\gib\es\ebenfalls\nicht d:\bla\bla\bla
Copy-Item c:\gib\es\ebenfalls\auch\nicht d:\bla\bla\bla
# Ende Testscript


$Mistake = $error.ToArray() # Umwandelen der Error-Variable in ein array und setzen einer neuen Variable
$array = ($error.InvocationInfo.PositionMessage) # Schon als array vorhandene PositionMessage in Variable schreiben

foreach
($Message in $array) {} # Versuch, die einzelnen "PositionMessages" zu seperieren

foreach # Versuch, den Fehler mit Zeit, Absatz und PositionMessage in ein Log zu schreiben
($passage in $Mistake) {"$( get-date -UFormat %d.%m.%Y-%T) $([System.Environment]::NewLine) $passage" + "$Message $([System.Environment]::NewLine)"  | Out-File 'c:\temp\logs\MyError.log' -append}
$error. Clear() #vermutlich unnötig, da Error-Variable nach beendigung des scriptes automatisch gelöscht wird.



Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>