•  
  •  
  • Home
  • /PowerShell
  • /Windows PowerShell und Windows Error Reporting (WER)
Windows PowerShell und Windows Error Reporting (WER)

Windows PowerShell und Windows Error Reporting (WER)

 

Bis Windows XP und Server2003 war Dr. Watson das Programm zur Crash-Analyse.
Ab Windows Vista ist nun Windows Error Reporting (WER) für das Hardware und Software Problemreporting, an die Stelle von Dr. Watson getreten.

Hier muss man aber beachten, das Programme die mit dem .NET Framework entwickelt worden sind meist keine Error-Reports erzeugen!

Windows Error Reporting (WER) ist für 2 Aufgaben zuständig.
Die Fehlerberichtsfunktion ermöglicht es Anwendungsfehler, Kernel-Fehler, nicht mehr reagierende Anwendungen und andere anwendungsspezifische Problemberichte über einen Service an Microsoft zu senden.

Werden die Problemberichte an Microsoft gesendet, dann wird in der Datenbank bei Microsoft nach Lösungen für das aufgetretene Problem gesucht und es werden Lösungen vorschlagen, wenn welche gefunden wurden.

Die Probleme werden anhand einer so genannten Bucket-ID Identifiziert.
Die Bucket-ID (oder auch fault Bucket ID) wird aus der Version des Programms, das abgestürzt ist und anderen technischen Informationen erzeugt. Dies schafft eine einzigartige Signatur für den Absturz.
Die Bucket-ID erscheint in den Details des Windows-Crash-Dialogs und den Ereignisprotokollen.
Diese Bucket-ID ist wichtig für Microsoft um das Problem eindeutig erkennen zu können.

Error Report Dateien *.wer

Windows Error Reporting (WER) sammelt auch die Reportdateien mit der Endung “.wer”, an verschiedenen Orten auf dem Computer.

Möchte man alle WER Reports erfassen so muss man in jedem User Profil auf dem Rechner nach den *.wer Dateien suchen und alle genannten Ordner “abklappern”.

[Edit] 08.08.2014 Die .wer Dateien benutzen Unicode als encoding. Ich habe den Code oben entsprechend angepasst.
.        Ohne die angabe von dem Encoding bekommt man sehr viele ungewollte Leerzeichen.

Konfiguration von Windows Error Reporting (WER)

Windows Error Reporting (WER) kann auf Verschiedenen Weisen konfiguriert werden. So kann man z.B. Abschalten das Problemberichte an Microsoft gesendet werden, oder man die Orte ändern an denen die *.wer Dateien Abgelegt werden.

Einen guten Artikel hat Herr Sommergut von WindowsPro verfasst:
Problembericht senden: Windows Error Reporting konfigurieren oder deaktivieren
http://www.windowspro.de/wolfgang-sommergut/problembericht-senden-windows-fehlerberichterstattung-konfigurieren-deaktivieren

Herr Sommergut beschreibt auch das man die WER Reportdateien über Gruppenrichtlinien so Konfigurieren kann, das Fehlerberichte an einen internen Server anstatt an Microsoft gesendet werden. Damit wird eine Funktion des Corporate Windows Error Reporting (CER) genutzt.
Man kann damit ein NTFS-Share oder ein SSL-Verbindung nutzen, um die Reports an den eigenen Server zu senden.

Weitere Dokumentation, wie man das Windows Error Reporting (WER) mit Group Policies oder Registry Schlüsseln einstellen kann, findet man in der Microsoft Dokumentation im Developer Center:

Windows Error Reporting (WER)
http://msdn.microsoft.com/en-us/library/windows/desktop/bb513641%28v=vs.85%29.aspx

Den Speicherort von den *.wer Dateien stellt man z.B. mit den folgenden Schlüsseln in der Windows Registry um:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\DumpFolder

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\DumpType

Siehe: Collecting User-Mode Dumps
http://msdn.microsoft.com/en-us/library/windows/desktop/bb787181%28v=vs.85%29.aspx

Windows Error Reporting (WER) Tools

Ein gutes Tool zum Verarbeiten von den Windows Error Reporting Dateien, hat Nir Sofer hergestellt. Dieses Tool nennt sich AppCrashView und kann auch mit der Windows PowerShell eingesetzt werden. Da es die *.wer Dateien in CSV oder XML umwandeln kann und von der Kommandozeile aus, gesteuert werden kann.

Download Nirsoft AppCrashView
http://www.nirsoft.net/utils/app_crash_view.html

 

Windows PowerShell Error Reporting (WER) Cmdlets

In Windows 8 und Server 2012 R2 gibt es nun auch 3 sehr bescheidene Windows PowerShell Cmdlets um das Reporting an oder abzuschalten.

Windows Error Reporting (WER) Cmdlets in Windows PowerShell
http://technet.microsoft.com/en-us/library/jj590827.aspx

  • Disable-WindowsErrorReporting schaltet das Error Reporting an Microsoft ab.
  • Enable-WindowsErrorReporting schaltet das Error Reporting an Microsoft wieder ein.
  • Get-WindowsErrorReporting zeigt an ob das Errorreporting ein oder ausgeschaltet ist.

Logfiles anstatt *.wer Dateien Nutzen

Die *.wer Dateien zu sammeln und zu mit der Windows PowerShell zu analysieren ist aber der falsche Ansatz.
Immer wenn ein Programm crasht dann wird das in den Ereignisprotokollen(Eventlog) von Windows Verzeichnet.

Windows PowerShell kann hervorragend mit den Windows Ereignisprotokollen (Eventlog) von Windows umgehen, da es für diese Aufgabe Spezielle Cmdlets hat.

Ein Applikation die abgestürzt ist zum Beispiel hinterlässt eine Eintrag im Applikations-Ereignisprotokoll mit der ID 1000 und der Report-Quelle ” Application Error”

Das Reporting selbst hinterlässt auch Einträge im Applikations-Ereignisprotokoll mit der ID 1001 und der Report-Quelle ” Windows Error Reporting”.

Einen schönen Artikel darüber hat Aaron Paul Rykhus geschrieben:
Finding useful crash data and Windows Error Reporting (WER)
http://blogs.technet.com/b/arykhus/archive/2008/12/11/finding-useful-crash-data-and-windows-error-reporting-wer.aspx

Happy Error Reporting!

The following two tabs change content below.
Profile photo of Peter Kriegel

Peter Kriegel

IT Professionell, SysAdmin
Ich arbeite mit Computern seit 1984 (Comodore Amiga war mein erster). Seit dem Jahr 1990 Programmiere ich in C,C++ und Basic Sprachen. Seit dem Jahr 2000 bin ich Computer Administrator. In diesem Jahr habe ich die Prüfungen für den Microsoft Certified System Administrator MCSA 2000 absolviert. Als System Administrator benutze ich VBScript ,DOS Batches, Office VBA. Seit 2005 Programmiere ich mit Visual Basic .NET (VB.NET) (.NET V2). Dort entwickle ich Datenbank-Bedienungsoberflächen für den Microsoft SQL Server (GUI Frontend). PowerShell benutze ich seit 2009. In einem sehr großen Active Directory (> 100000 Workstations) verwalte ich (und meine 9 Kollegen) ca. 3000 Windows Clients, die in 37 OUs geordnet sind.

Kommentar verfassen