Get-EventLog
Ruft die Ereignisse in einem Ereignisprotokoll oder eine Liste der Ereignisprotokolle auf dem lokalen Computer oder Remotecomputer ab.
Syntax
Get-EventLog
[-LogName] <String>
[-ComputerName <String[]>]
[-Newest <Int32>]
[-After <DateTime>]
[-Before <DateTime>]
[-UserName <String[]>]
[[-InstanceId] <Int64[]>]
[-Index <Int32[]>]
[-EntryType <String[]>]
[-Source <String[]>]
[-Message <String>]
[-AsBaseObject]
[<CommonParameters>]
Get-EventLog
[-ComputerName <String[]>]
[-List]
[-AsString]
[<CommonParameters>]
Beschreibung
Das Get-EventLog
Cmdlet ruft Ereignisse und Ereignisprotokolle von lokalen und Remotecomputern ab. Ruft standardmäßig Get-EventLog
Protokolle vom lokalen Computer ab. Verwenden Sie den Parameter "ComputerName ", um Protokolle von Remotecomputern abzurufen.
Sie können die Get-EventLog
Parameter und Eigenschaftswerte verwenden, um nach Ereignissen zu suchen. Das Cmdlet ruft Ereignisse ab, die den angegebenen Eigenschaftswerten entsprechen.
PowerShell-Cmdlets, die das EventLog
Substantiv enthalten, funktionieren nur in klassischen Windows-Ereignisprotokollen wie Anwendung, System oder Sicherheit. Um Protokolle abzurufen, die die Windows-Ereignisprotokolltechnologie in Windows Vista und höheren Windows-Versionen verwenden, verwenden Sie Get-WinEvent
.
Hinweis
Get-EventLog
verwendet eine Win32-API, die veraltet ist. Die Ergebnisse sind möglicherweise nicht korrekt. Verwenden Sie stattdessen das Get-WinEvent
Cmdlet.
Beispiele
Beispiel 1: Abrufen von Ereignisprotokollen auf dem lokalen Computer
In diesem Beispiel wird die Liste der Ereignisprotokolle angezeigt, die auf dem lokalen Computer verfügbar sind. Die Namen in der Spalte "Protokoll" werden mit dem LogName-Parameter verwendet, um anzugeben, welches Protokoll nach Ereignissen gesucht wird.
Get-EventLog -List
Max(K) Retain OverflowAction Entries Log
------ ------ -------------- ------- ---
15,168 0 OverwriteAsNeeded 20,792 Application
15,168 0 OverwriteAsNeeded 12,559 System
15,360 0 OverwriteAsNeeded 11,173 Windows PowerShell
Das Get-EventLog
Cmdlet verwendet den Parameter "List ", um die verfügbaren Protokolle anzuzeigen.
Beispiel 2: Abrufen zuletzt verwendeter Einträge aus einem Ereignisprotokoll auf dem lokalen Computer
In diesem Beispiel werden aktuelle Einträge aus dem Systemereignisprotokoll abgerufen.
Get-EventLog -LogName System -Newest 5
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13820 Jan 17 19:16 Error DCOM 10016 The description for Event...
13819 Jan 17 19:08 Error DCOM 10016 The description for Event...
13818 Jan 17 19:06 Information Service Control... 1073748864 The start type of the Back...
13817 Jan 17 19:05 Error DCOM 10016 The description for Event...
13815 Jan 17 19:03 Information Microsoft-Windows... 35 The time service is now sync...
Das Get-EventLog
Cmdlet verwendet den Parameter LogName , um das Systemereignisprotokoll anzugeben. Der Parameter "Neustes " gibt die fünf neuesten Ereignisse zurück.
Beispiel 3: Suchen aller Quellen für eine bestimmte Anzahl von Einträgen in einem Ereignisprotokoll
In diesem Beispiel wird gezeigt, wie Sie alle Quellen finden, die in den 1000 neuesten Einträgen im Systemereignisprotokoll enthalten sind.
$Events = Get-EventLog -LogName System -Newest 1000
$Events | Group-Object -Property Source -NoElement | Sort-Object -Property Count -Descending
Count Name
----- ----
110 DCOM
65 Service Control Manager
51 Microsoft-Windows-Kern...
14 EventLog
14 BTHUSB
13 Win32k
Das Get-EventLog
Cmdlet verwendet den Parameter LogName , um das Systemprotokoll anzugeben. Der neueste Parameter wählt die letzten 1000 Ereignisse aus. Die Ereignisobjekte werden in der $Events
Variablen gespeichert. Die $Events
Objekte werden an das Group-Object
Cmdlet gesendet.
Group-Object
verwendet den Parameter Property , um die Objekte nach Quelle zu gruppieren und die Anzahl der Objekte für jede Quelle zu zählen. Der Parameter NoElement entfernt die Gruppenmitglieder aus der Ausgabe.
Das Sort-Object
Cmdlet verwendet den Parameter Property , um nach der Anzahl der einzelnen Quellnamen zu sortieren.
Der Parameter "Descending " sortiert die Liste nach Anzahl von der höchsten bis zur niedrigsten.
Beispiel 4: Abrufen von Fehlerereignissen aus einem bestimmten Ereignisprotokoll
In diesem Beispiel werden Fehlerereignisse aus dem Systemereignisprotokoll abgerufen.
Get-EventLog -LogName System -EntryType Error
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13296 Jan 16 13:53 Error DCOM 10016 The description for Event ID '10016' in Source...
13291 Jan 16 13:51 Error DCOM 10016 The description for Event ID '10016' in Source...
13245 Jan 16 11:45 Error DCOM 10016 The description for Event ID '10016' in Source...
13230 Jan 16 11:07 Error DCOM 10016 The description for Event ID '10016' in Source...
Das Get-EventLog
Cmdlet verwendet den Parameter LogName , um das Systemprotokoll anzugeben. Der EntryType-Parameter filtert die Ereignisse so, dass nur Fehlerereignisse angezeigt werden.
Beispiel 5: Abrufen von Ereignissen aus einem Ereignisprotokoll mit einem InstanceId- und Source-Wert
In diesem Beispiel werden Ereignisse aus dem Systemprotokoll für eine bestimmte InstanzId und Quelle abgerufen.
Get-EventLog -LogName System -InstanceId 10016 -Source DCOM
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13245 Jan 16 11:45 Error DCOM 10016 The description for Event ID '10016' in Source...
13230 Jan 16 11:07 Error DCOM 10016 The description for Event ID '10016' in Source...
13219 Jan 16 10:00 Error DCOM 10016 The description for Event ID '10016' in Source...
Das Get-EventLog
Cmdlet verwendet den Parameter LogName , um das Systemprotokoll anzugeben. Der Parameter InstanceID wählt die Ereignisse mit der angegebenen Instanz-ID aus. Der Source-Parameter gibt die Ereigniseigenschaft an.
Beispiel 6: Abrufen von Ereignissen von mehreren Computern
Dieser Befehl ruft die Ereignisse aus dem Systemereignisprotokoll auf drei Computern ab: Server01, Server02 und Server03.
Get-EventLog -LogName System -ComputerName Server01, Server02, Server03
Das Get-EventLog
Cmdlet verwendet den Parameter LogName , um das Systemprotokoll anzugeben. Der ComputerName-Parameter verwendet eine durch Trennzeichen getrennte Zeichenfolge, um die Computer auflisten, aus denen Sie die Ereignisprotokolle abrufen möchten.
Beispiel 7: Abrufen aller Ereignisse, die ein bestimmtes Wort in der Nachricht enthalten
Dieser Befehl ruft alle Ereignisse im Systemereignisprotokoll ab, die ein bestimmtes Wort in der Ereignisnachricht enthalten. Es ist möglich, dass der Wert des angegebenen Nachrichtenparameters im Inhalt der Nachricht enthalten ist, aber nicht in der PowerShell-Konsole angezeigt wird.
Get-EventLog -LogName System -Message *description*
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13821 Jan 17 19:17 Error DCOM 10016 The description for Event ID '10016'...
13820 Jan 17 19:16 Error DCOM 10016 The description for Event ID '10016'...
13819 Jan 17 19:08 Error DCOM 10016 The description for Event ID '10016'...
Das Get-EventLog
Cmdlet verwendet den Parameter LogName , um das Systemereignisprotokoll anzugeben. Der Parameter Message gibt ein Wort an, nach dem im Nachrichtenfeld jedes Ereignisses gesucht werden soll.
Beispiel 8: Anzeigen der Eigenschaftswerte eines Ereignisses
In diesem Beispiel wird gezeigt, wie alle Eigenschaften und Werte eines Ereignisses angezeigt werden.
$A = Get-EventLog -LogName System -Newest 1
$A | Select-Object -Property *
EventID : 10016
MachineName : localhost
Data : {}
Index : 13821
Category : (0)
CategoryNumber : 0
EntryType : Error
Message : The description for Event ID '10016' in Source 'DCOM'...
Source : DCOM
ReplacementStrings : {Local,...}
InstanceId : 10016
TimeGenerated : 1/17/2019 19:17:23
TimeWritten : 1/17/2019 19:17:23
UserName : username
Site :
Container :
Das Get-EventLog
Cmdlet verwendet den Parameter LogName , um das Systemereignisprotokoll anzugeben. Der neueste Parameter wählt das neueste Ereignisobjekt aus. Das Objekt wird in der $A
Variablen gespeichert. Das Objekt in der $A
Variablen wird an das Select-Object
Cmdlet gesendet.
Select-Object
verwendet den Property-Parameter mit einem Sternchen (*
), um alle Eigenschaften des Objekts auszuwählen.
Beispiel 9: Abrufen von Ereignissen aus einem Ereignisprotokoll mithilfe einer Quell- und Ereignis-ID
In diesem Beispiel werden Ereignisse für eine angegebene Quell- und Ereignis-ID angezeigt.
Get-EventLog -LogName Application -Source Outlook | Where-Object {$_.EventID -eq 63} |
Select-Object -Property Source, EventID, InstanceId, Message
Source EventID InstanceId Message
------ ------- ---------- -------
Outlook 63 1073741887 The Exchange web service request succeeded.
Outlook 63 1073741887 Outlook detected a change notification.
Outlook 63 1073741887 The Exchange web service request succeeded.
Das Get-EventLog
Cmdlet verwendet den Parameter LogName , um das Anwendungsereignisprotokoll anzugeben. Der Source-Parameter gibt den Anwendungsnamen Outlook an. Die Objekte werden an das Where-Object
Cmdlet gesendet. Für jedes Objekt in der Pipeline verwendet das Where-Object
Cmdlet die Variable $_.EventID
, um die Ereignis-ID-Eigenschaft mit dem angegebenen Wert zu vergleichen. Die Objekte werden an das Select-Object
Cmdlet gesendet. Select-Object
verwendet den Parameter Property , um die Eigenschaften auszuwählen, die in der PowerShell-Konsole angezeigt werden sollen.
Beispiel 10: Abrufen von Ereignissen und Gruppieren nach einer Eigenschaft
Get-EventLog -LogName System -UserName NT* | Group-Object -Property UserName -NoElement |
Select-Object -Property Count, Name
Count Name
----- ----
6031 NT AUTHORITY\SYSTEM
42 NT AUTHORITY\LOCAL SERVICE
4 NT AUTHORITY\NETWORK SERVICE
Das Get-EventLog
Cmdlet verwendet den Parameter LogName , um das Systemprotokoll anzugeben. Der Parameter "UserName " enthält das Sternchen (*
) zum Angeben eines Teils des Benutzernamens. Die Ereignisobjekte werden an das Group-Object
Cmdlet gesendet. Group-Object
verwendet den Parameter Property , um anzugeben, dass die UserName-Eigenschaft verwendet wird, um die Objekte zu gruppieren und die Anzahl der Objekte für jeden Benutzernamen zu zählen. Der Parameter NoElement entfernt die Gruppenmitglieder aus der Ausgabe. Die Objekte werden an das Select-Object
Cmdlet gesendet.
Select-Object
verwendet den Parameter Property , um die Eigenschaften auszuwählen, die in der PowerShell-Konsole angezeigt werden sollen.
Beispiel 11: Abrufen von Ereignissen, die während eines bestimmten Datums- und Uhrzeitbereichs aufgetreten sind
In diesem Beispiel werden Fehlerereignisse aus dem Systemereignisprotokoll für einen angegebenen Datums- und Uhrzeitbereich abgerufen. Die Parameter "Before" und "After" legen den Datums- und Uhrzeitbereich fest, werden jedoch von der Ausgabe ausgeschlossen.
$Begin = Get-Date -Date '1/17/2019 08:00:00'
$End = Get-Date -Date '1/17/2019 17:00:00'
Get-EventLog -LogName System -EntryType Error -After $Begin -Before $End
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
13821 Jan 17 13:40 Error DCOM 10016 The description for Event ID...
13820 Jan 17 13:11 Error DCOM 10016 The description for Event ID...
...
12372 Jan 17 10:08 Error DCOM 10016 The description for Event ID...
12371 Jan 17 09:04 Error DCOM 10016 The description for Event ID...
Das Get-Date
Cmdlet verwendet den Parameter "Date ", um ein Datum und eine Uhrzeit anzugeben. Die DateTime-Objekte werden in den $Begin
und $End
Variablen gespeichert. Das Get-EventLog
Cmdlet verwendet den Parameter LogName , um das Systemprotokoll anzugeben. Der EntryType-Parameter gibt den Fehlerereignistyp an. Der Datums- und Uhrzeitbereich wird durch den Parameter "After" und die Variable "Before" und $Begin
$End
"Before" festgelegt.
Parameter
-After
Ruft Ereignisse ab, die nach einem angegebenen Datum und einer angegebenen Uhrzeit aufgetreten sind. Das Datum und die Uhrzeit des After-Parameters werden von der Ausgabe ausgeschlossen. Geben Sie ein DateTime-Objekt ein, z. B. den wert, der Get-Date
vom Cmdlet zurückgegeben wird.
Typ: | DateTime |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-AsBaseObject
Gibt an, dass dieses Cmdlet ein standardmäßiges System.Diagnostics.EventLogEntry -Objekt für jedes Ereignis zurückgibt. Ohne diesen Parameter Get-EventLog
wird ein erweitertes PSObject-Objekt mit zusätzlichen EventLogName-, Source- und InstanceId-Eigenschaften zurückgegeben.
Um den Effekt dieses Parameters anzuzeigen, übergeben Sie die Ereignisse an das Get-Member
Cmdlet, und überprüfen Sie den TypeName-Wert im Ergebnis.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-AsString
Gibt an, dass dieses Cmdlet die Ausgabe als Zeichenfolgen anstelle von Objekten zurückgibt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Before
Ruft Ereignisse ab, die vor einem angegebenen Datum und einer angegebenen Uhrzeit aufgetreten sind. Das Datum und die Uhrzeit des Before-Parameters werden von der Ausgabe ausgeschlossen. Geben Sie ein DateTime-Objekt ein, z. B. den wert, der Get-Date
vom Cmdlet zurückgegeben wird.
Typ: | DateTime |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ComputerName
Dieser Parameter gibt den NetBIOS-Namen, die IP-Adresse (Internet Protocol) eines Remotecomputers oder einen vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN) eines Remotecomputers an.
Wenn der Parameter "ComputerName " nicht angegeben ist, Get-EventLog
wird standardmäßig der lokale Computer verwendet. Der Parameter akzeptiert auch einen Punkt (.
), um den lokalen Computer anzugeben.
Der Parameter "ComputerName " basiert nicht auf windows PowerShell-Remoting. Sie können mit dem Parameter "ComputerName" auch dann verwendet werdenGet-EventLog
, wenn Ihr Computer nicht für die Ausführung von Remotebefehlen konfiguriert ist.
Typ: | String[] |
Aliase: | Cn |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-EntryType
Gibt als Zeichenfolgenarray den Eintragstyp der Ereignisse an, die dieses Cmdlet abruft.
Zulässige Werte für diesen Parameter:
- Fehler
- Informationen
- FailureAudit
- SuccessAudit
- Warnung
Typ: | String[] |
Aliase: | ET |
Zulässige Werte: | Error, Information, FailureAudit, SuccessAudit, Warning |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Index
Gibt die Indexwerte an, die aus dem Ereignisprotokoll abgerufen werden sollen. Der Parameter akzeptiert eine durch Trennzeichen getrennte Zeichenfolge von Werten.
Typ: | Int32[] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-InstanceId
Gibt die Instanz-IDs an, die aus dem Ereignisprotokoll abgerufen werden sollen. Der Parameter akzeptiert eine durch Trennzeichen getrennte Zeichenfolge von Werten.
Typ: | Int64[] |
Position: | 1 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-List
Zeigt die Liste der Ereignisprotokolle auf dem Computer an.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-LogName
Gibt den Namen eines Ereignisprotokolls an. Um die Protokollnamen zu finden, verwenden Get-EventLog -List
Sie . Platzhalterzeichen sind zulässig. Dieser Parameter ist erforderlich.
Typ: | String |
Aliase: | LN |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | True |
-Message
Gibt eine Zeichenfolge in der Ereignisnachricht an. Mit diesem Parameter können Sie nach Nachrichten suchen, die bestimmte Wörter oder Ausdrücke enthalten. Platzhalter sind zulässig.
Typ: | String |
Aliase: | MSG |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | True |
-Newest
Beginnt mit den neuesten Ereignissen und ruft die angegebene Anzahl von Ereignissen ab. Die Anzahl der Ereignisse ist erforderlich, z. B -Newest 100
. . Gibt die maximale Anzahl von Ereignissen an, die zurückgegeben werden.
Typ: | Int32 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Source
Gibt als Zeichenfolgenarray Quellen an, die in das Vom Cmdlet abgerufene Protokoll geschrieben wurden. Platzhalter sind zulässig.
Typ: | String[] |
Aliase: | ABO |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | True |
-UserName
Gibt als Zeichenfolgenarray Benutzernamen an, die Ereignissen zugeordnet sind. Geben Sie Namen oder Namensmuster ein, zUser01
. B. , oder User*
Domain01\User*
. Platzhalter sind zulässig.
Typ: | String[] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | True |
Eingaben
None
Sie können keine Eingabe an Get-EventLog
.
Ausgaben
System.Diagnostics.EventLogEntry. System.Diagnostics.EventLog. System.String
Wenn der LogName-Parameter angegeben ist, ist die Ausgabe eine Auflistung von System.Diagnostics.EventLogEntry-Objekten .
Wenn nur der List-Parameter angegeben ist, handelt es sich bei der Ausgabe um eine Auflistung von System.Diagnostics.EventLog-Objekten.
Wenn sowohl die Parameter List als auch AsString angegeben werden, ist die Ausgabe eine Auflistung von System.String-Objekten .
Hinweise
Die Cmdlets Get-EventLog
und Get-WinEvent
werden in der Windows Preinstallation Environment (Windows PE) nicht unterstützt.