Skip to content
Log-Auswertung, Tools, PowerShell Sander Software & Konzepte

PowerShell Cheat-Sheet für Log-Auswertung

Für eine effiziente Softwareentwicklung sind Tests/UnitTests eine wichtige Grundlage. Deren Auswertung von Ausgaben würde ich selbst mir auch erleichtern.
Hierzu ist ein Cheat-Sheet für die Loganalyse mit PowerShell, das die wichtigsten Kommandos und Ansätze abdeckt:

PowerShell Cheat-Sheet für Loganalyse und Datenbankabfragen


1. Log-Datei einlesen

  • Get-Content: Zum Einlesen einer Logdatei zeilenweise.
  Get-Content "logfile.txt"

2. Filtern von Logeinträgen

  • Where-Object: Zum Filtern von bestimmten Logzeilen.
  Get-Content "logfile.txt" | Where-Object { $_ -match "ERROR" }

3. Reguläre Ausdrücke (Regex) verwenden

  • -match: Um Logzeilen basierend auf einem regulären Ausdruck zu durchsuchen.
  Get-Content "logfile.txt" | ForEach-Object {
      if ($_ -match "ERROR (\d+): (.+)") {
          $errorCode = $matches[1]
          $errorMessage = $matches[2]
          # Weitere Verarbeitung
      }
  }
  • $matches: Enthält die Ergebnisse des letzten erfolgreichen -match-Befehls.
  if ($logLine -match "ERROR (\d+): (.+)") {
      $errorCode = $matches[1]
      $errorMessage = $matches[2]
  }

4. Formatierung und Verarbeitung der Ausgabe

  • Select-Object: Um bestimmte Eigenschaften auszugeben.
  Get-Content "logfile.txt" | Select-Object -First 10
  • Out-File: Zum Schreiben der Ausgabe in eine neue Datei.
  Get-Content "logfile.txt" | Where-Object { $_ -match "ERROR" } | Out-File "errors.txt"

5. SQL-Abfragen ausführen

  • SQL Server Modul für PowerShell:
    Um mit SQL Server zu interagieren, installiere das SQL-Modul:
  Install-Module -Name SqlServer
  • Verbindung zur Datenbank herstellen:
  # mit den Berechtigungen des Ausführenden:
  $connectionString = "Server=localhost;Database=myDatabase;Integrated Security=True;Trusted_Connection=True;"

  # oder mit User ID/Password:
  $connectionString = "Server=localhost;Database=myDatabase;User Id=myUsername;Password=myPassword;"


  • SQL-Abfrage mit Invoke-Sqlcmd:
  Invoke-Sqlcmd -Query "SELECT * FROM Logs WHERE ErrorCode = $errorCode" -ConnectionString $connectionString
  • Daten in die Datenbank einfügen:
  $query = "INSERT INTO Logs (Timestamp, ErrorCode, ErrorMessage) VALUES ('$timestamp', '$errorCode', '$errorMessage')"
  Invoke-Sqlcmd -Query $query -ConnectionString $connectionString

6. Daten extrahieren und Datenbankaktionen

  • Daten aus Logdateien extrahieren und verarbeiten:
  Get-Content "logfile.txt" | ForEach-Object {
      if ($_ -match "ERROR (\d+): (.+)") {
          $errorCode = $matches[1]
          $errorMessage = $matches[2]
          $timestamp = Get-Date

          # Datenbankeintrag erstellen
          $query = "INSERT INTO Logs (Timestamp, ErrorCode, ErrorMessage) VALUES ('$timestamp', '$errorCode', '$errorMessage')"
          Invoke-Sqlcmd -Query $query -ConnectionString $connectionString
      }
  }

7. Fehlerbehandlung

  • Try-Catch: Eine wichtige Sache, für eine robuste Fehlerbehandlung bei der Datenverarbeitung oder SQL-Abfragen!
  try {
      # SQL-Abfrage ausführen
      Invoke-Sqlcmd -Query "SELECT * FROM Logs" -ConnectionString $connectionString
  }
  catch {
      Write-Host "Fehler bei der SQL-Abfrage: $_"
  }

8. Überwachen von Logdateien

  • FileSystemWatcher: Mit dem FileSystemWatcher die Änderungen an einer Logdatei über einen (Test)-Zeitraum in Echtzeit überwachen lassen.
  $watcher = New-Object System.IO.FileSystemWatcher
  $watcher.Path = "C:\Logs"
  $watcher.Filter = "logfile.txt"
  $watcher.EnableRaisingEvents = $true
  $watcher | Register-ObjectEvent -EventName Changed -Action {
      # Verarbeitung der geänderten Logdatei
      Write-Host "Logdatei wurde geändert"
  }

9. JSON und CSV Logdateien verarbeiten

  • Import-CSV: Falls Logs im CSV-Format vorliegen.
  $logs = Import-Csv "logfile.csv"
  • ConvertFrom-Json: Falls Logs im JSON-Format vorliegen.
  $logs = Get-Content "logfile.json" | ConvertFrom-Json

10. Export der Daten

  • Export-Csv: Exportiere verarbeitete Logdaten in eine CSV-Datei.
  $processedLogs | Export-Csv -Path "processedLogs.csv" -NoTypeInformation

Dieses Cheat-Sheet enthält die grundlegenden PowerShell-Befehle und -Konzepte, um Logs zu parsen, zu filtern und Datenbankabfragen basierend auf den extrahierten Informationen durchzuführen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert