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 Eigenschaftswerte entsprechen.

PowerShell-Cmdlets, die das EventLog Noun enthalten, funktionieren nur bei Windows klassischen Ereignisprotokollen wie Anwendung, System oder Sicherheit. Um Protokolle abzurufen, die die Windows Ereignisprotokolltechnologie in Windows Vista und höher 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 neuer 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 neueste Parameter 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 letzten 1000 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 LogName-Parameter , 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 Eigenschaftsparameter , 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 Absteigende Parameter sortiert die Liste in der Reihenfolge 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 LogName-Parameter , um das Systemprotokoll anzugeben. Der EntryType-Parameter filtert die Ereignisse, um nur Fehlerereignisse anzuzeigen.

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 LogName-Parameter , 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 LogName-Parameter , um das Systemprotokoll anzugeben. Der Parameter ComputerName verwendet eine durch Kommas getrennte Zeichenfolge, um die Computer auflisten zu können, 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 Nachricht des Ereignisses 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, das 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 Eigenschaftsparameter 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 LogName-Parameter , um das Anwendungsereignisprotokoll anzugeben. Der Parameter Source 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 LogName-Parameter , 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 Eigenschaftsparameter , 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, sind jedoch aus 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 LogName-Parameter , um das Systemprotokoll anzugeben. Der EntryType-Parameter gibt den Fehlerereignistyp an. Der Datums- und Uhrzeitbereich wird durch den After-Parameter und $Begin die Variable "Before " und $End "Before" festgelegt.

Parameter

-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 Eigenschaften "EventLogName", "Source" und "InstanceId " zurückgegeben.

Um den Effekt dieses Parameters anzuzeigen, übergeben Sie die Ereignisse an das Get-Member Cmdlet, und untersuchen Sie den TypeName-Wert im Ergebnis.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-AsString

Gibt an, dass dieses Cmdlet die Ausgabe als Zeichenfolgen anstelle von Objekten zurückgibt.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-ComputerName

Dieser Parameter gibt den NetBIOS-Namen eines Remotecomputers, die IP-Adresse (Internet Protocol) oder einen vollqualifizierten Domänennamen (FQDN) an.

Wenn der Parameter "ComputerName " nicht angegeben ist, Get-EventLog werden die Standardwerte auf dem lokalen Computer festgelegt. Der Parameter akzeptiert auch einen Punkt (.), um den lokalen Computer anzugeben.

Der ComputerName-Parameter basiert nicht auf Windows PowerShell Remoting. Sie können mit dem ComputerName-Parameter auch dann verwendenGet-EventLog, wenn Ihr Computer nicht zum Ausführen von Remotebefehlen konfiguriert ist.

Type:String[]
Aliases:Cn
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-EntryType

Gibt als Zeichenfolgenarray den Eintragstyp der Ereignisse an, die dieses Cmdlet abruft.

Zulässige Werte für diesen Parameter:

  • Fehler
  • Information
  • FehlerAudit
  • SuccessAudit
  • Warnung
Type:String[]
Aliases:ET
Accepted values:Error, Information, FailureAudit, SuccessAudit, Warning
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Index

Gibt die Indexwerte an, die vom Ereignisprotokoll abgerufen werden sollen. Der Parameter akzeptiert eine kommatrennte Zeichenfolge von Werten.

Type:Int32[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-InstanceId

Gibt die Instanz-IDs an, die vom Ereignisprotokoll abgerufen werden sollen. Der Parameter akzeptiert eine kommatrennte Zeichenfolge von Werten.

Type:Int64[]
Position:1
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-List

Zeigt die Liste der Ereignisprotokolle auf dem Computer an.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-LogName

Gibt den Namen eines Ereignisprotokolls an. Um die Protokollnamen zu finden, verwenden Get-EventLog -ListSie . Platzhalterzeichen sind zulässig. Dieser Parameter ist erforderlich.

Type:String
Aliases:LN
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:True
-Nach

Ruft Ereignisse ab, die nach einem angegebenen Datum und einer angegebenen Uhrzeit aufgetreten sind. Das Datum und die Uhrzeit des After-Parameters werden aus der Ausgabe ausgeschlossen. Geben Sie ein DateTime-Objekt ein, z. B. den vom Cmdlet zurückgegebenen Get-Date Wert.

Type:DateTime
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Nachricht

Gibt eine Zeichenfolge in der Ereignisnachricht an. Sie können diesen Parameter verwenden, um nach Nachrichten zu suchen, die bestimmte Wörter oder Ausdrücke enthalten. Platzhalter sind zulässig.

Type:String
Aliases:MSG
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True
-Neustes

Beginnt mit den neuesten Ereignissen und ruft die angegebene Anzahl von Ereignissen ab. Die Anzahl der Ereignisse ist erforderlich, z -Newest 100. B. . Gibt die maximale Anzahl von Ereignissen an, die zurückgegeben werden.

Type:Int32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Source

Gibt als Zeichenfolgenarray Quellen an, die in das Protokoll geschrieben wurden, das dieses Cmdlet abruft. Platzhalter sind zulässig.

Type:String[]
Aliases:ABO
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True
-UserName

Gibt als Zeichenfolgenarray Benutzernamen an, die Ereignissen zugeordnet sind. Geben Sie Namen oder Namenmuster ein, z User01. B. , User*oder Domain01\User*. Platzhalter sind zulässig.

Type:String[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True
-Vor

Ruft Ereignisse ab, die vor einem angegebenen Datum und einer angegebenen Uhrzeit aufgetreten sind. Das Vorparameterdatum und die Uhrzeit werden von der Ausgabe ausgeschlossen. Geben Sie ein DateTime-Objekt ein, z. B. den vom Cmdlet zurückgegebenen Get-Date Wert.

Type:DateTime
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

Keine

Sie können keine Eingabe an Get-EventLog.

Ausgaben

System.Diagnostics.EventLogEntry. System.Diagnostics.EventLog. System.String

Wenn der LogName-Parameter angegeben wird, ist die Ausgabe eine Auflistung von System.Diagnostics.EventLogEntry-Objekten .

Wenn nur der List-Parameter angegeben wird, ist die Ausgabe 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.