Get-WinEvent
Ruft Ereignisse aus Ereignisprotokollen und Ereignisablaufverfolgungs-Protokolldateien auf lokalen Computern und Remotecomputern ab.
Syntax
Get-WinEvent [-LogName] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Get-WinEvent [-Path] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Get-WinEvent [-ProviderName] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [-FilterXPath <string>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Get-WinEvent -FilterHashTable <Hashtable[]> [-ComputerName <string>] [-Credential <PSCredential>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Get-WinEvent [-ListLog] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [<CommonParameters>]
Get-WinEvent [-ListProvider] <string[]> [-ComputerName <string>] [-Credential <PSCredential>] [<CommonParameters>]
Get-WinEvent -FilterXml <XmlDocument> [-ComputerName <string>] [-Credential <PSCredential>] [-Force <switch>] [-MaxEvents <int64>] [-Oldest] [<CommonParameters>]
Beschreibung
Das Cmdlet "Get-WinEvent" ruft Ereignisse aus Ereignisprotokollen ab. Dies umfasst klassische Protokolle, wie das System- oder das Anwendungsprotokoll, und Ereignisprotokolle, die von der in Windows Vista eingeführten Windows-Ereignisprotokolltechnologie generiert werden. Es werden auch Ereignisse in Protokolldateien abgerufen, die von der Ereignisablaufverfolgung für Windows (Event Tracing for Windows, ETW) generiert werden.
Ohne Parameter werden mit dem Befehl "Get-WinEvent" alle Ereignisse aus allen Ereignisprotokollen auf dem Computer abgerufen. Drücken Sie STRG+C, um den Befehl zu unterbrechen.
Get-WinEvent führt auch Ereignisprotokolle und Ereignisprotokollanbieter auf. Sie können Ereignisse aus ausgewählten Protokollen oder aus Protokollen abrufen, die von ausgewählten Ereignisanbietern generiert werden. Außerdem können Sie Ereignisse aus mehreren Quellen in einem Befehl zusammenfassen. Mit "Get-WinEvent" können Sie Ereignisse mit XPath-Abfragen, strukturierten XML-Abfragen und vereinfachten Hashtabellenabfragen filtern.
Hinweis: "Get-WinEvent" erfordert Windows Vista, Windows Server 2008 R2 oder eine höhere Version von Windows. Zusätzlich wird Microsoft .NET Framework 3.5 oder eine höhere Version benötigt.
Parameter
-ComputerName <string>
Ruft Ereignisse aus den Ereignisprotokollen auf dem angegebenen Computer ab. Geben Sie den NetBIOS-Namen, eine IP-Adresse oder den vollqualifizierten Domänennamen des Computers ein. Der Standardwert ist der lokale Computer.
Dieser Parameter akzeptiert jeweils nur einen Computernamen. Um Ereignisprotokolle oder Ereignisse auf mehreren Computern zu suchen, verwenden Sie eine ForEach-Anweisung. Weitere Informationen über diesen Parameter finden Sie in den Beispielen.
Zum Abrufen von Ereignissen und Ereignisprotokollen von Remotecomputern muss der Firewallport des Ereignisprotokolldiensts zum Zulassen des Remotezugriffs konfiguriert sein.
Dieser Parameter beruht nicht auf Windows PowerShell-Remoting. Sie können den ComputerName-Parameter auch dann verwenden, wenn der Computer nicht für das Ausführen von Remotebefehlen konfiguriert ist.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Credential <PSCredential>
Gibt ein Benutzerkonto an, das über die Berechtigung zum Ausführen dieser Aktion verfügt. Der Standardwert ist der aktuelle Benutzer.
Geben Sie einen Benutzernamen ein, z. B. "User01" oder "Domain01\User01". Oder geben Sie ein PSCredential-Objekt ein, z. B. ein vom Cmdlet "Get-Credential" generiertes Objekt. Wenn Sie einen Benutzernamen eingeben, werden Sie zur Eingabe eines Kennworts aufgefordert. Wenn Sie nur den Parameternamen eingeben, werden Sie aufgefordert, einen Benutzernamen und ein Kennwort anzugeben.
Erforderlich? |
false |
Position? |
named |
Standardwert |
Aktueller Benutzer |
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-FilterHashTable <Hashtable[]>
Verwendet eine Abfrage im Hashtabellenformat, um Ereignisse aus einem oder mehreren Ereignisprotokollen auszuwählen. Die Abfrage enthält eine Hashtabelle mit einem oder mehreren Schlüssel-Wert-Paaren.
Hashtabellenabfragen weisen die folgenden Regeln auf:
– Bei Schlüsseln und Werten wird die Groß-/Kleinschreibung nicht berücksichtigt.
– Platzhalterzeichen sind nur in Werten gültig, die den Schlüsseln "LogName" und "ProviderName" zugeordnet sind.
– Jeder Schlüssel kann in den einzelnen Hashtabellen nur je einmal aufgeführt werden.
– Im Path-Wert können Pfade zu Dateien mit den Endungen ".etl", ".evt" und ".evtx" angegeben werden.
– Die Schlüssel "LogName", "Path" und "ProviderName" können in derselben Abfrage verwendet werden.
– Der Schlüssel "UserID" kann eine gültige Sicherheits-ID (SID) oder einen Domänenkontonamen annehmen, der zum Erstellen eines gültigen System.Security.Principal.NTAccount-Objekts verwendet werden kann.
– Der Wert "Data" nimmt Ereignisdaten in einem unbenannten Feld an. Dies gilt für Ereignisse in klassischen Ereignisprotokollen.
– Der Schlüssel "*" stellt ein benanntes Ereignisdatenfeld dar.
Wenn Get-WinEvent kein Schlüssel-Wert-Paar interpretieren kann, wird der Schlüssel als Name mit Berücksichtigung der Groß-/Kleinschreibung für die Ereignisdaten im Ereignis interpretiert.
Die gültigen Schlüssel-Wert-Paare lauten wie folgt:
– LogName=<String[]>
– ProviderName=<String[]>
– Path=<String[]>
– Keywords=<Long[]>
– ID=<Int32[]>
– Level=<Int32[]>
– StartTime=<DateTime>
– EndTime=<DataTime>
– UserID=<SID>
– Data=<String[]>
– *=<String[]>
Erforderlich? |
true |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
true (ByValue) |
Platzhalterzeichen akzeptieren? |
false |
-FilterXml <XmlDocument>
Verwendet eine strukturierte XML-Abfrage, um Ereignisse aus einem oder mehreren Ereignisprotokollen auszuwählen.
Um eine gültige XML-Abfrage zu generieren, verwenden Sie die Features "Benutzerdefinierte Ansicht erstellen" und "Aktuelles Protokoll filtern" in der Ereignisanzeige. Verwenden Sie die Elemente im Dialogfeld, um eine Abfrage zu erstellen, und klicken Sie dann auf die Registerkarte "XML", um die Abfrage im XML-Format anzuzeigen. Sie können das XML von der Registerkarte "XML" in den Wert des FilterXml-Parameters kopieren. Weitere Informationen über die Features der Ereignisanzeige finden Sie in der Hilfe zur Ereignisanzeige.
In der Regel verwenden Sie eine XML-Abfrage, um eine komplexe Abfrage zu erstellen, die mehrere XPath-Anweisungen enthält. Das XML-Format ermöglicht es Ihnen auch, das XML-Element "Suppress" zu verwenden, das Ereignisse von der Abfrage ausschließt. Weitere Informationen zum XML-Schema für Ereignisprotokollabfragen finden Sie in den folgenden Themen in der MSDN (Microsoft Developer Network) Library.
– "Abfrageschema": https://go.microsoft.com/fwlink/?LinkId=143685
– "XML Event Queries" in "Event Selection": https://go.microsoft.com/fwlink/?LinkID=143608
Erforderlich? |
true |
Position? |
named |
Standardwert |
Keiner |
Pipelineeingaben akzeptieren? |
true (ByValue) |
Platzhalterzeichen akzeptieren? |
false |
-FilterXPath <string>
Verwendet eine XPath-Abfrage, um Ereignisse aus einem oder mehreren Protokollen auszuwählen.
Weitere Informationen über die XPath-Sprache finden Sie in "Ereignisauswahl" unter "Auswahlfilter" und in der "Referenz zu XPath" in der MSDN Library.
Erforderlich? |
false |
Position? |
named |
Standardwert |
Keiner |
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Force <switch>
Ruft zusätzlich zu anderen Ereignisprotokollen Debug- und Analyseprotokolle ab. Der Force-Parameter ist erforderlich, um ein Debug- oder Analyseprotokoll abzurufen, wenn der Wert des Name-Parameters Platzhalterzeichen enthält.
Standardmäßig schließt "Get-WinEvent" diese Protokolle aus, es sei denn, Sie geben den vollständigen Namen eines Debug- oder Analyseprotokolls an.
Erforderlich? |
false |
Position? |
named |
Standardwert |
Debugging- und Analyseprotokolle werden nicht als Reaktion auf Abfragen zurückgegeben, die Platzhalterzeichen verwenden. |
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-ListLog <string[]>
Ruft die angegebenen Ereignisprotokolle ab. Geben Sie die Ereignisprotokollnamen in einer durch Trennzeichen getrennten Liste ein. Platzhalter sind zulässig. Um alle Protokolle abzurufen, geben Sie den Wert "*" ein.
Erforderlich? |
true |
Position? |
1 |
Standardwert |
Keiner |
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
true |
-ListProvider <string[]>
Ruft die angegebenen Ereignisprotokollanbieter ab. Ein Ereignisprotokollanbieter ist ein Programm oder ein Dienst, das bzw. der Ereignisse in das Ereignisprotokoll schreibt.
Geben Sie die Anbieternamen in einer durch Trennzeichen getrennten Liste ein. Platzhalter sind zulässig. Um die Anbieter aller Ereignisprotokolle auf dem Computer abzurufen, geben Sie den Wert "*" ein.
Erforderlich? |
true |
Position? |
1 |
Standardwert |
Keiner |
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
true |
-LogName <string[]>
Ruft Ereignisse aus den angegebenen Ereignisprotokollen ab. Geben Sie die Ereignisprotokollnamen in einer durch Trennzeichen getrennten Liste ein. Platzhalter sind zulässig. Sie können die Protokollnamen auch über die Pipeline an "Get-WinEvent" übergeben.
Erforderlich? |
true |
Position? |
1 |
Standardwert |
Keiner |
Pipelineeingaben akzeptieren? |
true (ByValue) |
Platzhalterzeichen akzeptieren? |
true |
-MaxEvents <int64>
Gibt die maximale Anzahl von Ereignissen an, die von Get-WinEvent zurückgegeben werden. Geben Sie eine ganze Zahl ein. Standardmäßig werden alle Ereignisse in den Protokollen oder Dateien zurückgegeben.
Erforderlich? |
false |
Position? |
named |
Standardwert |
Alle Ereignisse |
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Oldest
Gibt ältere Ereignisse vor neueren Ereignissen zurück. Standardmäßig werden die neuesten Ereignisse zuerst zurückgegeben.
Dieser Parameter ist zum Abrufen von Ereignissen aus ETL- und EVT-Dateien und aus Debug- und Analyseprotokollen erforderlich. In diesen Dateien werden die ältesten Ereignisse zuerst aufgezeichnet, und die Ereignisse können nur in dieser Reihenfolge zurückgegeben werden.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Path <string[]>
Ruft Ereignisse aus den angegebenen Ereignisprotokolldateien ab. Geben Sie die Pfade zu den Protokolldateien in einer durch Trennzeichen getrennten Liste ein, oder erstellen Sie mithilfe von Platzhalterzeichen Dateipfadmuster.
Get-WinEvent unterstützt Dateien mit den Dateinamenerweiterungen ".evt", ".evtx" und ".etl". Sie können Ereignisse aus anderen Dateien und Dateitypen in denselben Befehl einschließen.
Erforderlich? |
true |
Position? |
1 |
Standardwert |
Keiner |
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
true |
-ProviderName <string[]>
Ruft von den angegebenen Ereignisprotokollanbietern geschriebene Ereignisse ab. Geben Sie die Anbieternamen in einer durch Trennzeichen getrennten Liste ein, oder erstellen Sie mithilfe von Platzhalterzeichen Anbieternamensmuster.
Ein Ereignisprotokollanbieter ist ein Programm oder ein Dienst, das bzw. der Ereignisse in das Ereignisprotokoll schreibt. Es handelt sich dabei nicht um einen Windows PowerShell-Anbieter.
Erforderlich? |
true |
Position? |
1 |
Standardwert |
Keiner |
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
true |
<CommonParameters>
Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.
Eingaben und Ausgaben
Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.
Eingaben |
System.String, System.Xml.XmlDocument, System.Collections.Hashtable. Sie können eine LogName (Zeichenfolge)-, FilterXML- oder FilterHashTable-Abfrage über die Pipeline an "Get-WinEvent" übergeben. |
Ausgaben |
System.Diagnostics.Eventing.Reader.EventLogConfiguration, System.Diagnostics.Eventing.Reader.EventLogRecord, System.Diagnostics.Eventing.Reader.ProviderMetadata Mit dem ListLog-Parameter gibt "Get-WinEvent" gibt System.Diagnostics.Eventing.Reader.EventLogConfiguration-Objekte zurück. Mit dem ListProvider-Parameter gibt "Get-WinEvent" folgende Objekte zurück: System.Diagnostics.Eventing.Reader.ProviderMetadata-Objekte. Mit allen anderen Parametern gibt Get-WinEvent System.Diagnostics.Eventing.Reader.EventLogRecord-Objekte zurück. |
Hinweise
Get-WinEvent soll das Cmdlet "Get-EventLog" auf Computern ersetzen, auf denen Windows Vista und höhere Versionen von Windows ausgeführt werden. Get-EventLog ruft Ereignisse nur in klassischen Ereignisprotokollen ab. Get-EventLog wird in Windows PowerShell 2.0 für frühere Systeme als Windows Vista beibehalten.
Beispiel 1
C:\PS>get-winevent -listlog *
Beschreibung
-----------
Dieser Befehl ruft alle Protokolle auf dem lokalen Computer ab.
Protokolle werden in der Reihenfolge aufgeführt, in der sie von Get-WinEvent abgerufen werden. Klassische Protokolle werden normalerweise zuerst abgerufen, gefolgt von den neuen Windows-Ereignisprotokollen.
Da i. d. R. mehr als hundert Ereignisprotokolle vorhanden sind, erfordert dieser Parameter einen Protokollnamen oder ein Namensmuster. Um alle Protokolle abzurufen, verwenden Sie "*".
Beispiel 2
C:\PS>get-winevent -listlog Setup | format-list -property *
FileSize : 69632
IsLogFull : False
LastAccessTime : 2/14/2008 12:55:12 AM
LastWriteTime : 7/9/2008 3:12:05 AM
OldestRecordNumber : 1
RecordCount : 3
LogName : Setup
LogType : Operational
LogIsolation : Application
IsEnabled : True
IsClassicLog : False
SecurityDescriptor : O:BAG:SYD:(A;;0xf0007;;;SY)(A;
(A;;0x1;;;S-1-5-32-573)
LogFilePath : %SystemRoot%\System32\Winevt\L
MaximumSizeInBytes : 1052672
LogMode : Circular
OwningProviderName : Microsoft-Windows-Eventlog
ProviderNames : {Microsoft-Windows-WUSA, Micro
ProviderLevel :
ProviderKeywords :
ProviderBufferSize : 64
ProviderMinimumNumberOfBuffers : 0
ProviderMaximumNumberOfBuffers : 64
ProviderLatency : 1000
ProviderControlGuid :
Beschreibung
-----------
Diese Befehle rufen ein Objekt ab, das das klassische Systemprotokoll auf dem lokalen Computer darstellt. Das Objekt enthält nützliche Informationen über das Protokoll, u. a. dessen Größe, Ereignisprotokollanbieter, den Dateipfad und die Angabe, ob es aktiviert ist.
Beispiel 3
C:\PS>get-winevent -listlog * -computername Server01| where {$_.recordcount}
Beschreibung
-----------
Dieser Befehl ruft nur Ereignisprotokolle auf dem Computer "Server01" ab, die Ereignisse enthalten. Viele Protokolle sind u. U. leer.
Der Befehl verwendet die RecordCount-Eigenschaft des EventLogConfiguration-Objekts, das Get-WinEvent zurückgibt, wenn Sie den ListLog-Parameter verwenden.
Beispiel 4
C:\PS>$s = "Server01", "Server02", "Server03"
C:\PS> foreach ($server in $s)
{$server; get-winevent -listlog "Windows PowerShell" -computername $server}
Beschreibung
-----------
Die Befehle in diesem Beispiel rufen Objekte ab, die die Windows PowerShell-Ereignisprotokolle auf den Computern "Server01", "Server02" und "Server03" darstellen. Bei diesem Befehl wird das Foreach-Schlüsselwort verwendet, da der ComputerName-Parameter nur einen einzelnen Wert akzeptiert.
Der erste Befehl speichert die Namen der Computer in der Variablen "$s".
Der zweite Befehl verwendet eine Foreach-Anweisung. Für jeden Computer in der Variablen "$s" wird der Befehl im Skriptblock (innerhalb der geschweiften Klammern) ausgeführt. Mit dem Befehl wird zuerst der Name des Computers ausgegeben. Anschließend wird der Befehl "Get-WinEvent" ausgeführt, um ein Objekt abzurufen, das das Windows PowerShell-Protokoll darstellt.
Beispiel 5
C:\PS>get-winevent -listprovider *
Beschreibung
-----------
Dieser Befehl ruft die Ereignisprotokollanbieter auf dem lokalen Computer sowie die Protokolle ab, in die sie ggf. schreiben.
Beispiel 6
C:\PS>(get-winevent -listlog Application).providernames
Beschreibung
-----------
Dieser Befehl ruft alle Anbieter ab, die in das Anwendungsprotokoll auf dem lokalen Computer schreiben.
Beispiel 7
C:\PS>>get-winevent -listprovider *policy*
Beschreibung
-----------
Dieser Befehl ruft alle Ereignisprotokollanbieter ab, deren Namen das Wort "policy" enthalten.
Beispiel 8
C:\PS>(get-winevent -listprovider microsoft-windows-grouppolicy).events | format-table id, description -auto
Beschreibung
-----------
Dieser Befehl führt die Ereignis-IDs auf, die der Microsoft-Windows-GroupPolicy-Ereignisanbieter mit der Ereignisbeschreibung generiert.
Dabei wird die Events-Eigenschaft des Objekts verwendet, das "Get-WinEvent" zurückgibt, wenn Sie den ListProvider-Parameter verwenden, Außerdem werden die ID-Eigenschaft und die Description-Eigenschaft des Objekts in der Events-Eigenschaft verwendet.
Beispiel 9
C:\PS>$events = get-winevent -logname "Windows PowerShell"
C:\PS> $events.count
195
C:\PS> $events | group-object id -noelement | sort-object count -desc
Count Name
----- ----
147 600
22 400
21 601
3 403
2 103
C:\PS> $events | group-object leveldisplayname -noelement
Count Name
----- ----
2 Warning
193 Information
Beschreibung
-----------
In diesem Beispiel wird gezeigt, wie die Eigenschaften der Ereignisobjekte verwendet werden, die Get-WinEvent zurückgibt, um Informationen über die Ereignisse in einem Ereignisprotokoll zu erhalten.
Der erste Befehl verwendet das Cmdlet "Get-WinEvent", um alle Ereignisse im Windows PowerShell-Ereignisprotokoll abzurufen. Diese werden dann in der Variablen "$events" gespeichert. Der Protokollname wird in Anführungszeichen eingeschlossen, da er ein Leerzeichen enthält.
Im zweiten Befehl wird die Count-Eigenschaft von Objektauflistungen verwendet, um die Anzahl der Einträge im Ereignisprotokoll zu ermitteln.
Der dritte Befehl zeigt das Vorkommen von jedem Ereignis im Protokoll an, wobei die häufigsten Ereignisse zuerst angezeigt werden. In diesem Beispiel ist die Ereignis-ID 600 das häufigste Ereignis.
Der vierte Befehl gruppiert die Elemente nach dem Wert ihrer LevelDisplayName-Eigenschaft, um zu zeigen, wie viele Fehlerereignisse, Warnungen und Informationsereignisse im Protokoll vorhanden sind.
Beispiel 10
C:\PS>get-winevent -logname *disk*, Microsoft-Windows-Kernel-WHEA
Beschreibung
-----------
Dieser Befehl ruft alle Fehlerereignisse, deren Namen die Zeichenfolge "disk" enthalten, aus allen Ereignisprotokollen auf dem Computer und aus dem Microsoft-Windows-Kernel-WHEA-Ereignisprotokoll ab.
Beispiel 11
C:\PS>get-winevent -path 'c:\ps-test\Windows PowerShell.evtx'
Beschreibung
-----------
Dieser Befehl ruft Ereignisse aus einer Kopie der Windows PowerShell-Ereignisprotokolldatei in einem Testverzeichnis ab. Der Pfad ist in Anführungszeichen eingeschlossen, da der Protokollname ein Leerzeichen enthält.
Beispiel 12
C:\PS>get-winevent -path 'c:\tracing\tracelog.etl' -maxevents 100 -oldest
C:\PS> get-winevent -path 'c:\tracing\tracelog.etl' -oldest | sort-object -property timecreated -desc | select-object -first 100
Beschreibung
-----------
Diese Befehle rufen die ersten 100 Ereignisse aus einer Protokolldatei für die Ereignisablaufverfolgung für Windows (ETW, Event Tracing for Windows) ab.
Der erste Befehl ruft die 100 ältesten Ereignisse im Protokoll ab. Mit dem Cmdlet "Get-WinEvent" werden Ereignisse aus der Datei "Tracelog.etl" abgerufen. Mit dem MaxEvents-Parameter wird die Zahl der abgerufenen Ereignisse auf 100 beschränkt. Da die Ereignisse entsprechend ihrer Reihenfolge im Protokoll aufgeführt werden (älteste zuerst), ist der Oldest-Parameter erforderlich.
Mit dem zweiten Befehl werden die 100 neuesten Ereignisse im Protokoll abgerufen. Mit dem Cmdlet "Get-WinEvent" werden alle Ereignisse aus der Datei "Tracing.etl" abgerufen. Die Ereignisse
werden an das Cmdlet "Sort-Object" übergeben, das sie in absteigender Reihenfolge nach dem Wert der TimeCreated-Eigenschaft sortiert. Anschließend werden die Ereignisse an das Cmdlet "Select-Object" gesendet, um die neuesten 100 Ereignisse auszuwählen.
Beispiel 13
C:\PS>get-winevent -path "c:\tracing\tracelog.etl", "c:\Logs\Windows PowerShell.evtx" -oldest | where {$_.id -eq "103"}
Beschreibung
-----------
In diesem Beispiel wird gezeigt, wie Ereignisse aus einer Protokolldatei für die Ereignisablaufverfolgung (".etl") und aus einer Kopie der Windows PowerShell-Protokolldatei (".evtx") abgerufen werden, die in einem Testverzeichnis gespeichert wurde.
Sie können mehrere Dateitypen in einem einzelnen Befehl kombinieren. Da die Dateien ein .NET Framework-Objekt des gleichen Typs (ein EventLogRecord-Objekt) enthalten, können Sie die gleichen Eigenschaften zum Filtern verwenden.
Beachten Sie, dass der Befehl den Oldest-Parameter erfordert, da aus einer ETL-Datei gelesen wird. Der Oldest-Parameter gilt aber für beide Dateien.
Beispiel 14
C:\PS># Use the Where-Object cmdlet
C:\PS> $yesterday = (get-date) - (new-timespan -day 1)
C:\PS> get-winevent -logname "Windows PowerShell" | where {$_.timecreated -ge $yesterday}
# Uses FilterHashTable
C:\PS> $yesterday = (get-date) - (new-timespan -day 1)
C:\PS> get-winevent -FilterHashTable @{LogName='Windows PowerShell'; Level=3; StartTime=$yesterday}
# Use FilterXML
C:\PS> get-winevent -FilterXML "<QueryList><Query><Select Path='Windows PowerShell'>*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]</Select></Query></QueryList>"
# Use FilterXPath
C:\PS> get-winevent -LogName "Windows Powershell" -FilterXPath "*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]"
Beschreibung
-----------
In diesem Beispiel werden verschiedene Filtermethoden zum Auswählen von Ereignissen aus einem Ereignisprotokoll veranschaulicht. Alle Befehle rufen Ereignisse aus dem Windows PowerShell-Ereignisprotokoll ab, die in den letzten 24 Stunden eingetreten sind.
Die Filtermethoden sind effizienter als die Verwendung des Cmdlet "Where-Object", da die Filter während des Abrufens der Objekte angewendet werden, anstatt alle Objekte abzurufen und anschließend zu filtern.
Da das Formulieren von Datumsangaben im XML- und XPath-Format schwierig ist, wird zum Erstellen des XML-Inhalts für das Datum das Feature "Aktuelles Protokoll filtern" der Ereignisanzeige verwendet. Weitere Informationen über dieses Feature finden Sie in der Hilfe zur Ereignisanzeige.
Beispiel 15
C:\PS>$date = (get-date).AddDays(-2)
C:\PS> $events = get-winevent -FilterHashTable @{ logname = "Microsoft-Windows-Diagnostics-Performance/Operational"; StartTime = $date; ID = 100 }
Beschreibung
-----------
In diesem Beispiel wird eine Filterhashtabelle verwendet, um Ereignisse aus dem Leistungsprotokoll abzurufen.
Der erste Befehl ruft mithilfe des Cmdlet "Get-Date" und der AddDays-Methode ein Datum ab, das zwei Tage vor dem aktuellen Datum liegt. Das Datum wird in der Variablen "$date" gespeichert.
Der zweite Befehl verwendet das Cmdlet "Get-WinEvent" mit dem FilterHashTable-Parameter. Die Schlüssel in der Hashtabelle definieren einen Filter, der Ereignisse aus dem Leistungsprotokoll auswählt, die innerhalb der letzten zwei Tage eingetreten sind und die Ereignis-ID 100 aufweisen.
Der Schlüssel "LogName" gibt das Ereignisprotokoll an, der Schlüssel "StartTime" gibt das Datum an, und der Schlüssel "ID" gibt die Ereignis-ID an.
Beispiel 16
C:\PS>$starttime = (get-date).adddays(-7)
C:\PS> $ie-error = Get-WinEvent -FilterHashtable @{logname="application"; providername="Application Error"; data="iexplore.exe"; starttime=$starttime}
Beschreibung
-----------
In diesem Beispiel wird eine Filterhashtabelle verwendet, um Internet Explorer-Anwendungsfehler zu suchen, die innerhalb der letzten Woche aufgetreten sind.
Der erste Befehl ruft das Datum ab, das sieben Tage vor dem aktuellen Datum liegt, und speichert es in der Variablen "$starttime".
Der zweite Befehl verwendet das Cmdlet "Get-WinEvent" mit dem FilterHashTable-Parameter. Die Schlüssel in der Hashtabelle definieren einen Filter, der Ereignisse aus dem Anwendungsprotokoll auswählt, die vom Anwendungsfehleranbieter geschrieben wurden und den Ausdruck "iexplore.exe" einschließen.
Der Schlüssel "LogName" gibt das Ereignisprotokoll an. Der Schlüssel "ProviderName" gibt den Ereignisanbieter an, der Schlüssel "StartTime" gibt das Anfangsdatum der Ereignisse an, und der Schlüssel "Data" gibt den Text in der Ereignismeldung an.