Wenn Sie schon erfolglos versucht haben, Ereignisse in Windows zu protokollieren, könnte Ihnen dieser Artikel weiterhelfen. Anstatt sich nur auf Textprotokolle oder verstreute Meldungen zu verlassen, erleichtert das direkte Schreiben in die Ereignisanzeige die Fehlersuche erheblich – insbesondere, wenn etwas schiefgeht. Diese Anleitung zeigt Ihnen, wie Sie PowerShell- oder sogar Befehlszeilenskripte so konfigurieren, dass sie diese Protokolle direkt in Windows schreiben. Das ist äußerst praktisch zum Debuggen oder um die Ausführung von Skripten nachzuverfolgen. Aus unerfindlichen Gründen kann dies auf verschiedenen Rechnern etwas unberechenbar sein – manchmal funktioniert es, manchmal treten seltsame Berechtigungsfehler auf. Ein kleiner Hinweis: Auf manchen Systemen müssen Sie PowerShell möglicherweise als Administrator ausführen, damit alles reibungslos funktioniert. Das Erstellen benutzerdefinierter Protokolle erfordert ein paar zusätzliche Schritte, ist aber durchaus machbar.
Wie man Ereignisprotokolle mit PowerShell oder CMD in Windows schreibt
Methode 1: Verwendung des PowerShell-Befehls Write-EventLog
Dies ist die einfachste Methode, sofern Sie eine Windows-Version verwenden, die diese Funktion noch unterstützt. Sie ist hilfreich, da sie übersichtliche Protokolle direkt in die Ereignisanzeige schreibt, wodurch Sie leichter nachvollziehen können, was Ihr Skript tut oder wann ein Fehler auftritt. Diese Methode ist anwendbar, wenn beim Ausführen von Skripten oder Befehlen keine Einträge in der Ereignisanzeige erscheinen oder wenn Sie benutzerdefinierte Ereignisquellen für Ihre Anwendungen benötigen.
- Zunächst müssen Sie möglicherweise eine spezifische Datenquelle erstellen, insbesondere wenn Sie zum ersten Mal in dieses spezielle Protokoll schreiben. Verwenden Sie:
New-EventLog -LogName Application -Source "MyScripts" - Wenn Sie Ihre Quelle bereits eingerichtet haben, führen Sie einfach Folgendes aus:
Write-EventLog -LogName Application -Source "MyScripts" -EntryType Information -EventID 1001 -Message "PowerShell script started"
Dieser Befehl schreibt eine Meldung mit Ihrer benutzerdefinierten Quelle in das Anwendungsprotokoll. Anschließend können Sie die Ereignisanzeige öffnen und überprüfen, ob Ihr Ereignis unter „Anwendung“eventvwr.msc angezeigt wird. Beachten Sie, dass Sie PowerShell auf manchen Systemen als Administrator ausführen müssen – Windows stellt sicher, dass Sie Protokolle schreiben dürfen. Falls es nicht funktioniert, überprüfen Sie Ihre Berechtigungen.
Methode 2: Protokollierung über die Eingabeaufforderung mit eventcreate.exe
Wenn Sie lieber über die Eingabeaufforderung oder Batchdateien skripten möchten, eventcreate.exeist das ein echter Geheimtipp. Es ist in Windows integriert und benötigt keine zusätzliche Einrichtung. Im Grunde erstellt es direkt einen Protokolleintrag – ganz unkompliziert.
- Hier ein Beispiel:
eventcreate /t information /l application /id 1 /d "Batch script started"
Es ist simpel, aber effektiv – Sie erhalten eine Meldung im Ereignisprotokoll. Beachten Sie jedoch, dass Sie damit keine benutzerdefinierten Protokolle erstellen können wie mit PowerShell (zumindest nicht ohne Weiteres).Verwenden Sie daher die Standardprotokolle, es sei denn, Sie möchten komplexere Registry-Änderungen vornehmen und benutzerdefinierte Protokolle erstellen.
Option 1: Erstellen benutzerdefinierter Protokolle für Ihre Skripte
Wenn das Standard-Anwendungsprotokoll nicht ausreicht und Sie ein eigenes Protokoll benötigen, können Sie ein benutzerdefiniertes Protokoll erstellen. Dies ist hilfreich, wenn Sie eine große Anwendung entwickeln oder Protokolle für bestimmte Skripte aufschlüsseln. So geht’s:
- Verwenden Sie PowerShell:
New-EventLog -LogName CustomPSLog -Source "MyScripts"
Aber hier ist der Haken: Bevor Sie ein Ereignis schreiben, stellen Sie sicher, dass das Protokoll und die Quelle vorhanden sind. Um Fehler zu vermeiden, sollten Sie prüfen, ob sie bereits vorhanden sind.
if (-not [System. Diagnostics. EventLog]::SourceExists('MyScripts')) { New-EventLog -LogName CustomPSLog -Source 'MyScripts' } Write-EventLog -LogName CustomPSLog -Source 'MyScripts' -EntryType Information -EventID 1 -Message "Test log entry"
Sobald Sie das getan haben, sollte unter „Anwendungs- und Dienstprotokolle“ ein neues Protokoll namens „CustomPSLog“ angezeigt werden, das auch in der Ereignisanzeige zu finden ist. Die Protokolle werden als Dateien im Verzeichnis „/usr/local/bin“ gespeichert, daher ist das alles recht üblich..evtx%SystemRoot%\System32\Winevt\Logs
Hinweis zu PowerShell Core (7+)
Und jetzt kommt der Haken: In PowerShell Core (Version 7 und höher) Write-EventLogwird das nicht mehr unterstützt. Stattdessen muss man umständlich mit `New-WinEvent` oder benutzerdefinierten Providern arbeiten. Das kann verwirrend sein. Wenn Sie also nicht darauf vorbereitet sind, sollten Sie lieber Windows PowerShell 5.1 verwenden oder Skripte mit dem entsprechenden -UseWindowsPowerShellFlag ausführen, um es einfacher zu halten.
Manchmal hilft es schon, einfach das Modul Microsoft. PowerShell. Management zu importieren:
Import-Module Microsoft. PowerShell. Management -UseWindowsPowerShell Write-EventLog -LogName CustomPSLog -Source 'MyScripts' -EntryType Information -EventID 1 -Message "Testing in PS Core"
Wichtig: Berechtigungen sind wichtig.
Dieser kurze Tipp ist wirklich erwähnenswert: Sie benötigen Administratorrechte, um Protokolle oder Datenquellen zu erstellen, insbesondere wenn Sie neue benutzerdefinierte Protokolle erstellen. Benutzerkonten ohne Administratorrechte sind eingeschränkt und können nur Ereignisse an bestehende Protokolle und Datenquellen senden, die von einem Benutzer mit Administratorrechten erstellt wurden. Führen Sie daher PowerShell oder CMD als Administrator aus, falls Berechtigungsfehler auftreten.
Und vielleicht, nur vielleicht, ist das der Grund, warum manche Protokolle nicht angezeigt werden oder nicht erstellt werden können. Die Windows-Sicherheit ist in solchen Fällen nicht immer hilfreich.
Zusammenfassung
- Erstellen Sie bei Bedarf vor dem Schreiben eine Quelle
New-EventLog. - Dient
Write-EventLogzum Hinzufügen von Einträgen zu bestehenden Protokollen. - Für CMD
eventcreate.exeerfüllt es seinen Zweck gut. - Möchten Sie ein eigenes Protokoll? Erstellen Sie es
New-EventLogund überprüfen Sie die Berechtigungen. - PowerShell Core erfordert möglicherweise einige zusätzliche Schritte oder die Ausführung im Windows PowerShell-Kompatibilitätsmodus.
Zusammenfassung
Das ist zwar nicht die eleganteste Art, Protokolle zu erstellen – Windows kann bei Berechtigungen und Quellen ganz schön nervig sein –, aber einmal eingerichtet, vereinfacht es die Fehlersuche ungemein. Manchmal reicht es schon, die richtigen Befehle zu kennen und sicherzustellen, dass man sie mit Administratorrechten ausführt. Denn natürlich muss Windows die Dinge unnötig verkomplizieren.
Hoffentlich spart das jemandem ein paar Stunden, insbesondere wenn man versucht, Protokolle zu automatisieren oder Informationen von Skripten zu sammeln, die auf mehreren Rechnern laufen. Viel Erfolg!