
Lange und komplexe PowerShell-Skripte werden schnell unübersichtlich und man verliert den Überblick, wo das Skript gerade steht und was aktuell abgearbeitet wird. Aus diesem Grund solltet ihr in jedem Skript bereits von Anfang an eine einfache Log-Funktionalität einbauen. Dies ist in vielen Fällen schneller und einfacher zu realisieren, als das Logging später aufwändig nachzurüsten. Vor allem bei Skripten, welche kritische Daten schreiben, ist das Logging im Nachhinein oftmals ein Segen. Beispielsweise wenn euer PowerShell-Skript Daten im AD ändert und im Nachgang einige Änderungen rückgängig gemacht werden müssen.
Daher habe ich eine kleine Funktion geschrieben, welche ich nahezu am Anfang jedes PowerShell-Skripts einbinde. Die Ausgabe erfolgt sowohl in der Konsole als auch in einer Log-Datei. Neben dem aktuellen Datum und der Uhrzeit ermöglicht die Log-Funktion zudem die Definition von verschiedenen Log-Leveln.
Das Skript steht auch als Download zur Verfügung.
$path = "C:\Temp"
$date = get-date -format "yyyy-MM-dd-HH-mm"
$file = ("Log_" + $date + ".log")
$logfile = $path + "\" + $file
function Write-Log([string]$logtext, [int]$level=0)
{
$logdate = get-date -format "yyyy-MM-dd HH:mm:ss"
if($level -eq 0)
{
$logtext = "[INFO] " + $logtext
$text = "["+$logdate+"] - " + $logtext
Write-Host $text
}
if($level -eq 1)
{
$logtext = "[WARNING] " + $logtext
$text = "["+$logdate+"] - " + $logtext
Write-Host $text -ForegroundColor Yellow
}
if($level -eq 2)
{
$logtext = "[ERROR] " + $logtext
$text = "["+$logdate+"] - " + $logtext
Write-Host $text -ForegroundColor Red
}
$text >> $logfile
}
# log something
Write-Log "this is a simple log test"
# create warning log entry
Write-Log "this is a simple log test" 2
# use more than simple variables in a string
$cmds = get-command
Write-Log "there are $($cmds.count) commands available"
Sie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen
Neueste Kommentare