Logdatei erstellen

Posted on: 16. Oktober 2018
Immer wieder benötigen wir LogDateien um gewisse Tätigkeiten von Scripts und allgemein PowerSHELL zu Protokollieren. Hier eine simple und effiziente Möglichkeit, wir du dies umsetzen kannst ohne auf fremde Tools und Module zuzugreifen.

Denk dran: solltest du Wünsche oder Anregungen für Themen und Beträge haben, dann lass es mich bitte wissen z.B. in einem Kommentar oder oben auf dem Input-Formular
Hier der Code aus dem Youtube-Video. Die Vorgehensweise und Bemerkungen findest du direkt als Kommentare (#Grün) im Code. So wird er dir ebenfalls in der PowerSHELL ISE angezeigt werden.
——————————————–
# Pfad zum Ablegen der LogDateien            
$LogPfad = "C:\Script\LogFile"            
            
# Datum generieren. Mit diesem Beispiel wird pro Tag eine Logdatei erstellt            
$Datum = get-date -Format "dd.MM.yyyy"            
            
# LogFile Prüfen und erstellen falls nicht vorhanden            
if (!(Test-Path ("$LogPfad\$Datum" + "_LogFile.txt")))            
    {            
       # Erstellen des LogFiles            
       $Logfile = (New-Item ("$LogPfad\$Datum" + "_LogFile.txt") -ItemType File -Force).FullName            
                   
       # Überschrift für das LogFile            
       Add-Content $Logfile ("Die LogDatei wurde erstellt am $(get-date -Format "dddd dd. MMMM yyyy HH:mm:ss") Uhr`n").ToUpper()            
            
       # Leerzeilen einfügen            
       Add-Content $Logfile "`n`n"            
            
       # Spaltenüberschrift generieren            
       $LogInhalt = "{0,-25}{1,-12}{2}" -f "Zeitstempel","Typ","Logtext"            
                   
       # Überschrift dem Logfile hinzufügen            
       Add-Content $Logfile $LogInhalt            
    }            
else            
    {            
        # Falls Logfile schon vorhanden, Datei in die Variabel $Logfile aufnehmen            
        $Logfile = (Get-Item ("$LogPfad\$Datum" + "_LogFile.txt")).FullName            
            
    }            
            
# Funktion zum Erzeugen der einzelnen LogEinträge            
function write-LogRecord            
    {            
        param            
            (            
                [ValidateSet("INFO","WARNING","ERROR","DEBUG")]            
                [String]$Typ="INFO",            
                [ValidateNotNullOrEmpty()]            
                [String]$Text            
            )            
                    
        # Generieren des Zeitstempels für die einzelnen LogZeilen            
        $TimeStamp = get-date -Format "[dd.MM.yyyy HH:mm:ss]"            
                    
        # Inhalt entsprechend Formatieren und zusammensetzen            
        $LogInhalt = "{0,-25}{1,-12}{2}" -f $TimeStamp,$Typ,$Text            
            
        # Hinzufügen zum LogFile            
        Add-Content $Logfile $LogInhalt            
    }            
            
# Beispiel für Logeinträge mit allen Diensten als Info            
Get-Service | % {write-LogRecord -Typ INFO -Text "Dienst $($_.Name) ist im Status $($_.Status)"}            
            
# Manuelles Beispiel für einen Logeintrag            
write-LogRecord -Typ DEBUG "Hier wird ein Debug Aufruf protokolliert"            
            
# Weiteres Beispiel            
write-LogRecord -Typ WARNING "Das ist eine sauber formatierte Warnung"
——————————————–
Solltest du irgendwelche Fragen haben, dann kannst du diese gerne entweder hier im Blog oder direkt unter dem YouTube Video stellen. Ich gebe alles, deine Fragen zeitnahe zu beantworten oder ein entsprechendes Video darüber zu machen.
Gerade die Grundlagen-Videos werde ich nicht mit viel Text ausschmücken. Bei mir ist jeweils jede Code-Zeile direkt im Code Kommentiert (#Grün). Du kannst den Code direkt mit in dein Script kopieren und hast so eine gute Orientierungshilfe, sobald du die Scripts auf deine Bedürfnisse anpasst.

Ich erstelle und veröffentliche sämtliche Videos kostenlos und blende auch keine Werbung ein, dies will ich auch so beibehalten. Da das vermittelte Wissen aber in teuren Kursen erlangt werden kann, ist eine kleine Spende hin und wieder sicher keine schlechte Gegenleistung.