Verwenden von Ereignissen (Windows-Ereignisprotokoll)

Sie können Ereignisse aus Kanälen oder aus Protokolldateien nutzen. Um Ereignisse zu nutzen, können Sie alle Ereignisse nutzen oder einen XPath-Ausdruck angeben, der die Ereignisse identifiziert, die Sie nutzen möchten. Informationen zum Bestimmen der Elemente und Attribute eines Ereignisses, das Sie in Ihrem XPath-Ausdruck verwenden können, finden Sie unter Ereignisschema.

Das Windows-Ereignisprotokoll unterstützt eine Teilmenge von XPath 1.0. Ausführliche Informationen zu den Einschränkungen finden Sie unter XPath 1.0-Einschränkungen.

Die folgenden Beispiele zeigen einfache XPath-Ausdrücke.

// The following query selects all events from the channel or log file
XPath Query: *

// The following query selects all the LowOnMemory events from the channel or log file
XPath Query: *[UserData/LowOnMemory]

// The following query selects all events with a severity level of 1 (Critical) from the channel or log file
XPath Query: *[System/Level=1]

// The following query shows a compound expression that selects all events from the channel or log file
// where the printer's name is MyPrinter and severity level is 1.
XPath Query: *[UserData/*/PrinterName="MyPrinter" and System/Level=1]

// The following query selects all events from the channel or log file where the severity level is
// less than or equal to 3 and the event occurred in the last 24 hour period.
XPath Query: *[System[(Level <= 3) and TimeCreated[timediff(@SystemTime) <= 86400000]]]

Sie können die XPath-Ausdrücke direkt verwenden, wenn Sie die Funktionen EvtQuery oder EvtSubscribe aufrufen, oder Sie können eine strukturierte XML-Abfrage verwenden, die den XPath-Ausdruck enthält. Für einfache Abfragen, die Ereignisse aus einer einzelnen Quelle abfragen, ist die Verwendung eines XPath-Ausdrucks in Ordnung. Wenn der XPath-Ausdruck ein zusammengesetzter Ausdruck ist, der mehr als 20 Ausdrücke enthält oder Sie Ereignisse aus mehreren Quellen abfragen, müssen Sie eine strukturierte XML-Abfrage verwenden. Ausführliche Informationen zu den Elementen einer strukturierten XML-Abfrage finden Sie unter Abfrageschema.

Eine strukturierte Abfrage identifiziert die Quelle der Ereignisse und einen oder mehrere Selektoren oder Suppressoren. Ein Selektor enthält einen XPath-Ausdruck, der Ereignisse aus der Quelle auswählt, und ein Suppressor enthält einen XPath-Ausdruck, der verhindert, dass Ereignisse ausgewählt werden. Sie können Ereignisse aus mehreren Quellen auswählen. Wenn selektor und Suppressor dasselbe Ereignis identifizieren, ist das Ereignis nicht im Ergebnis enthalten.

Im Folgenden wird eine strukturierte XML-Abfrage gezeigt, die einen Satz von Selektoren und Suppressoren angibt.

<QueryList>
  <Query Id="0">
    <Select Path="Application">
        *[System[(Level <= 3) and 
        TimeCreated[timediff(@SystemTime) <= 86400000]]]
    </Select>
    <Suppress Path="Application">
        *[System[(Level = 2)]]
    </Suppress>
    <Select Path="System">
        *[System[(Level=1  or Level=2 or Level=3) and 
        TimeCreated[timediff(@SystemTime) <= 86400000]]]
    </Select>
  </Query>
</QueryList>

Das Resultset aus der Abfrage enthält keine Momentaufnahme der Ereignisse zum Zeitpunkt der Abfrage. Stattdessen enthält das Resultset die Ereignisse zum Zeitpunkt der Abfrage und enthält auch alle neuen Ereignisse, die ausgelöst werden, die den Abfragekriterien entsprechen, während Sie die Ergebnisse auflisten.

Hinweis

Die Reihenfolge der Ereignisse wird für Ereignisse beibehalten, die vom gleichen Thread geschrieben werden. Es ist jedoch möglich, dass Ereignisse, die von separaten Threads auf verschiedenen Prozessoren eines Mehrprozessorcomputers geschrieben werden, in ungeordneter Reihenfolge angezeigt werden.

 

Ausführliche Informationen zur Nutzung von Ereignissen finden Sie in den folgenden Themen:

Die Standardmäßigen Endbenutzertools für die Nutzung von Ereignissen sind:

XPath 1.0-Einschränkungen

Das Windows-Ereignisprotokoll unterstützt eine Teilmenge von XPath 1.0. Die primäre Einschränkung besteht darin, dass nur XML-Elemente, die Ereignisse darstellen, von einem Ereignisauswahlor ausgewählt werden können. Eine XPath-Abfrage, die kein Ereignis auswählt, ist ungültig. Alle gültigen Selektorpfade beginnen mit * oder "Event". Alle Speicherortpfade werden auf den Ereignisknoten ausgeführt und bestehen aus einer Reihe von Schritten. Jeder Schritt ist eine Struktur aus drei Teilen: der Achse, dem Knotentest und dem Prädikat. Weitere Informationen zu diesen Teilen und zu XPath 1.0 finden Sie unter XML Path Language (XPath). Das Windows-Ereignisprotokoll legt die folgenden Einschränkungen für den Ausdruck fest:

  • Achse: Nur die Untergeordnete Achse (Standard) und das Attribut (und die Kurzform "@") werden unterstützt.
  • Knotentests: Nur Knotennamen und NCName-Tests werden unterstützt. Das Zeichen "*", das ein beliebiges Zeichen auswählt, wird unterstützt.
  • Prädikate: Jeder gültige XPath-Ausdruck ist akzeptabel, wenn die Pfade den folgenden Einschränkungen entsprechen:
    • Die Standardoperatoren OR, AND, =, !=, <=, <, >>, und Klammern werden unterstützt.
    • Das Generieren eines Zeichenfolgenwerts für einen Knotennamen wird nicht unterstützt.
    • Die Auswertung in umgekehrter Reihenfolge wird nicht unterstützt.
    • Knotensätze werden nicht unterstützt.
    • Der Namespacebereich wird nicht unterstützt.
    • Namespace-, Verarbeitungs- und Kommentarknoten werden nicht unterstützt.
    • Die Kontextgröße wird nicht unterstützt.
    • Variablenbindungen werden nicht unterstützt.
    • Die Positionsfunktion und deren Kurzformarrayreferenz werden unterstützt (nur auf Blattknoten).
    • Die Band-Funktion wird unterstützt. Die Funktion führt ein bitweises AND für zwei ganzzahlige Zahlenargumente aus. Wenn das Ergebnis des bitweisen AND nonzero ist, wird die Funktion als true ausgewertet. Andernfalls wird die Funktion als false ausgewertet.
    • Die timediff-Funktion wird unterstützt. Die Funktion berechnet den Unterschied zwischen dem zweiten Und dem ersten Argument. Eines der Argumente muss eine Literalzahl sein. Die Argumente müssen die FILETIME-Darstellung verwenden. Das Ergebnis ist die Anzahl von Millisekunden zwischen den beiden Zeiten. Das Ergebnis ist positiv, wenn das zweite Argument einen späteren Zeitpunkt darstellt. andernfalls ist sie negativ. Wenn das zweite Argument nicht angegeben wird, wird die aktuelle Systemzeit verwendet.