PowerShell Log-Files: Logging in eine Textdatei

Logfiles in PowerShell können über den Befehl Out-File, über eine eigene Funktion oder über das in PowerShell integrierte Transcript erstellt werden.  

Transcript

Eine sehr einfache Variante die Command-Line-Ausgabe in eine Textdatei zu schreiben bietet der PowerShell-Befehl Transcript.

PS C:\temp> start-transcript c:\temp\transcript.txt
Die Aufzeichnung wurde gestartet. Die Ausgabedatei ist "c:\temp\transcript.txt".
PS C:\temp> write-host "test"
test
PS C:\temp> stop-transcript

Transcript schreibt einen Header mit Informationen zum User und Computer und im Anschluss die komplette Konsolenausgabe in eine Textdatei:

**********************
Start der Windows PowerShell-Aufzeichnung
Startzeit: 20200822123630
Benutzername: DOMAIN\User
RunAs-Benutzer: DOMAIN\User
Computer: COMPUTERNAME (Microsoft Windows NT 10.0.15063.0)
Hostanwendung: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Prozess-ID: 2832
PSVersion: 5.1.15063.1387
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.15063.1387
BuildVersion: 10.0.15063.1387
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Die Aufzeichnung wurde gestartet. Die Ausgabedatei ist "c:\temp\transcript.txt".
PS C:\temp> write-host "test"
test
PS C:\temp> stop-transcript
**********************
Ende der Windows PowerShell-Aufzeichnung
Endzeit: 20200822123640
**********************

Out-File

Wer die Ausgabe in die Textdatei selbst in die Hand nehmen will kann das mit dem Befehl Out-File, siehe auch: PowerShell-Textdatei. Mit Hilfe des Befehles Out-File ist es möglich von PowerShell in eine Textdatei zu schreiben, hier ein einfaches Beispiel:

"Logzeileneintrag" | out-file "c:\temp\log.txt" -Append

Der Parameter -Append erstellt die Datei, falls diese nicht vorhanden ist, und fügt bei einem erneuten Aufruf zusätzliche Logzeilen hinzu.

Damit, wie für ein Logfile üblich, auch die Zeit am Beginn der Logzeile geschrieben wird, kann diese mit folgendem Befehl hinzugefügt werden:

"$(get-date -format "yyyy-mm-dd H:mm:ss"): Logzeileneintrag" | out-file "c:\temp\log.txt" -Append

Ausgabe in die Datei:

eigene Logging-Funktion

Damit im Befehl für die Ausgabe der Logzeile nicht immer der Command für das Datum eingebaut werden muss, kann für das Logging auch eine eigene Funktion erstellt werden. Die Funktion könnte dann auch Dinge wie eine automatische Benennung der Log-Datei, Log-Rotation oder ähnliches implementieren. 

Um bei dem Beispiel mit Out-File zu bleiben und um die Funktion möglichst einfach zu halten, habe ich den Befehl in eine kleine Funktion gegeben: der Schreibvorgang in das Log-File erfolgt dann mittels "Write-Log -text "Logtext", hier die Funktion und deren Aufruf:

function Write-Log
{
    Param
    (
        $text
    )

    "$(get-date -format "yyyy-mm-dd H:mm:ss"): $($text)" | out-file "c:\temp\log.txt" -Append
}

Write-Log -text "Logzeile1"
Write-Log -text "Logzeile2"
positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!


veröffentlicht am 26.08.2020 von Bernhard


Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Mehr Details