Freigeben über


Register-WmiEvent

Abonniert ein WMI-Ereignis (Windows Management Instrumentation).

Syntax

class (Standard)

Register-WmiEvent
    [-Class] <String>
    [[-SourceIdentifier] <String>]
    [[-Action] <ScriptBlock>]
    [-Namespace <String>]
    [-Credential <PSCredential>]
    [-ComputerName <String>]
    [-Timeout <Int64>]
    [-MessageData <PSObject>]
    [-SupportEvent]
    [-Forward]
    [-MaxTriggerCount <Int32>]
    [<CommonParameters>]

query

Register-WmiEvent
    [-Query] <String>
    [[-SourceIdentifier] <String>]
    [[-Action] <ScriptBlock>]
    [-Namespace <String>]
    [-Credential <PSCredential>]
    [-ComputerName <String>]
    [-Timeout <Int64>]
    [-MessageData <PSObject>]
    [-SupportEvent]
    [-Forward]
    [-MaxTriggerCount <Int32>]
    [<CommonParameters>]

Beschreibung

Das Cmdlet Register-WmiEvent abonniert WMI-Ereignisse (Windows Management Instrumentation) auf dem lokalen Computer oder auf einem Remotecomputer.

Wenn das abonnierte WMI-Ereignis ausgelöst wird, wird es der Ereigniswarteschlange in Ihrer lokalen Sitzung hinzugefügt, auch wenn das Ereignis auf einem Remotecomputer auftritt. Verwenden Sie das Cmdlet Get-Event, um Ereignisse in der Ereigniswarteschlange abzurufen.

Sie können die Parameter von Register-WmiEvent verwenden, um Ereignisse auf Remotecomputern zu abonnieren und die Eigenschaftswerte der Ereignisse anzugeben, mit denen Sie das Ereignis in der Warteschlange identifizieren können. Sie können auch den Parameter Action verwenden, um Aktionen anzugeben, die ausgeführt werden sollen, wenn ein abonniertes Ereignis ausgelöst wird.

Wenn Sie ein Ereignis abonnieren, wird der Sitzung ein Ereignisabonnent hinzugefügt. Um die Ereignisabonnenten in der Sitzung abzurufen, verwenden Sie das cmdlet Get-EventSubscriber. Verwenden Sie zum Kündigen des Abonnements das Cmdlet Unregister-Event, das den Ereignisabonnent aus der Sitzung löscht.

Neue Common Information Model (CIM)-Cmdlets, die Windows PowerShell 3.0 eingeführt haben, führen dieselben Aufgaben wie die WMI-Cmdlets aus. Die CIM-Cmdlets entsprechen WS-Management (WSMan)-Standards und dem CIM-Standard, wodurch die Cmdlets dieselben Techniken verwenden können, um Computer zu verwalten, die das Windows-Betriebssystem ausführen, und diejenigen, die andere Betriebssysteme ausführen. Anstatt Register-WmiEventzu verwenden, sollten Sie das Cmdlet Register-CimIndicationEvent verwenden.

Beispiele

Beispiel 1: Abonnieren von Ereignissen, die von einer Klasse generiert werden

PS C:\> Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"

Dieser Befehl abonniert die von der Win32_ProcessStartTrace Klasse generierten Ereignisse. Diese Klasse löst ein Ereignis aus, wenn ein Prozess gestartet wird.

Beispiel 2: Abonnieren von Erstellungsereignissen für einen Prozess

PS C:\> Register-WmiEvent -Query "select * from __instancecreationevent within 5 where targetinstance isa 'win32_process'" -SourceIdentifier "WMIProcess" -MessageData "Test 01" -TimeOut 500

Dieser Befehl verwendet eine Abfrage, um Win32_process Instanzerstellungsereignisse zu abonnieren.

Beispiel 3: Verwenden einer Aktion zum Reagieren auf ein Ereignis

PS C:\> $action = { Get-History | where { $_.commandline -like "*start-process*" } | export-cliXml "commandHistory.clixml" }
PS C:\> Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted" -Action $action
Id    Name            State      HasMoreData   Location  Command
--    ----            -----      -----------   --------  -------
1     ProcessStarted  NotStarted False                   get-history | where {...

In diesem Beispiel wird gezeigt, wie Sie eine Aktion verwenden, um auf ein Ereignis zu reagieren. In diesem Fall werden beim Starten eines Prozesses alle Start-Process Befehle in der aktuellen Sitzung in eine XML-Datei geschrieben.

Wenn Sie denAction-Parameter verwenden, gibt Register-WmiEvent einen Hintergrundauftrag zurück, der die Ereignisaktion darstellt. Sie können die Job-Cmdlets verwenden, z. B. Get-Job und Receive-Job, um den Ereignisauftrag zu verwalten.

Weitere Informationen finden Sie unter about_Jobs.

Beispiel 4: Registrieren für Ereignisse auf einem Remotecomputer

PS C:\> Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "Start" -Computername Server01
PS C:\> Get-Event -SourceIdentifier "Start"

In diesem Beispiel werden Ereignisse auf dem Remotecomputer Server01 registriert.

WMI gibt die Ereignisse an den lokalen Computer zurück und speichert sie in der Ereigniswarteschlange in der aktuellen Sitzung. Führen Sie zum Abrufen der Ereignisse einen lokalen Get-Event-Befehl aus.

Parameter

-Action

Gibt Befehle an, die die Ereignisse behandeln. Die Befehle im Action-Parameter werden ausgeführt, wenn ein Ereignis ausgelöst wird, anstatt das Ereignis an die Ereigniswarteschlange zu senden. Schließen Sie die Befehle in geschweifte Klammern ( { } ) ein, um einen Skriptblock zu erstellen.

Der Wert von Action kann die Variablen $Event, $EventSubscriber, $Sender, $EventArgs und $Args automatic enthalten, die Informationen über das Ereignis für den Action-Skriptblock bereitstellen. Weitere Informationen finden Sie unter about_Automatic_Variables.

Wenn Sie eine Aktion angeben, gibt Register-WmiEvent ein Ereignisauftragsobjekt zurück, das diese Aktion darstellt. Sie können die Cmdlets verwenden, die das Auftrag Substantiv (das Job Cmdlets) enthalten, um den Ereignisauftrag zu verwalten.

Parametereigenschaften

Typ:ScriptBlock
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:101
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Class

Gibt das Ereignis an, für das Sie abonnieren. Geben Sie die WMI-Klasse ein, die die Ereignisse generiert. Ein Class oder Query Parameter ist in jedem Befehl erforderlich.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

class
Position:0
Obligatorisch:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-ComputerName

Gibt den Namen des Computers an, auf dem der Befehl ausgeführt wird. Der Standardwert ist der lokale Computer.

Geben Sie den NetBIOS-Namen, eine IP-Adresse oder einen vollqualifizierten Domänennamen des Computers ein. Um den lokalen Computer anzugeben, geben Sie den Computernamen, einen Punkt (.) oder localhost ein.

Dieser Parameter basiert nicht auf Windows PowerShell-Remoting. Sie können den parameter ComputerName verwenden, auch wenn Ihr Computer nicht für die Ausführung von Remotebefehlen konfiguriert ist.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Cn

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Credential

Gibt ein Benutzerkonto an, das über die Berechtigung zum Ausführen dieser Aktion verfügt. Die Standardeinstellung 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 Objekt, das vom Cmdlet Get-Credential generiert wird. Wenn Sie einen Benutzernamen eingeben, werden Sie von diesem Cmdlet aufgefordert, ein Kennwort einzugeben.

Parametereigenschaften

Typ:PSCredential
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Forward

Gibt an, dass dieses Cmdlet Ereignisse für dieses Abonnement an die Sitzung auf dem lokalen Computer sendet. Verwenden Sie diesen Parameter, wenn Sie sich für Ereignisse auf einem Remotecomputer oder in einer Remotesitzung registrieren.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-MaxTriggerCount

Gibt die maximale Auslöseranzahl an.

Parametereigenschaften

Typ:Int32
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-MessageData

Gibt alle zusätzlichen Daten an, die diesem Ereignisabonnement zugeordnet werden sollen. Der Wert dieses Parameters wird in der MessageData-Eigenschaft aller Ereignisse angezeigt, die diesem Abonnement zugeordnet sind.

Parametereigenschaften

Typ:PSObject
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Namespace

Gibt den Namespace der WMI-Klasse an.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:NS

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Query

Gibt eine Abfrage in der WMI-Abfragesprache (WQL) an, die die WMI-Ereignisklasse identifiziert, z. B.: select * from __InstanceDeletionEvent.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

query
Position:0
Obligatorisch:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-SourceIdentifier

Gibt einen Namen an, den Sie für das Abonnement auswählen. Der von Ihnen ausgewählte Name muss in der aktuellen Sitzung eindeutig sein. Der Standardwert ist die GUID, die Windows PowerShell zuweist.

Der Wert dieses Parameters ist im Wert der SourceIdentifier-Eigenschaft des Abonnentenobjekts und aller diesem Abonnement zugeordneten Ereignisobjekte vorhanden.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:100
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-SupportEvent

Gibt an, dass dieses Cmdlet das Ereignisabonnement ausblendet. Verwenden Sie diesen Parameter, wenn das aktuelle Abonnement Teil eines komplexeren Ereignisregistrierungsmechanismus ist und nicht unabhängig ermittelt werden sollte.

Um ein Abonnement anzuzeigen oder zu kündigen, das mithilfe des Parameters SupportEvent erstellt wurde, geben Sie den Force-Parameter der Cmdlets Get-EventSubscriber und Unregister-Event an.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Timeout

Gibt an, wie lange Windows PowerShell auf den Abschluss dieses Befehls wartet.

Der Standardwert 0 (Null) bedeutet, dass kein Timeout vorhanden ist, und windows PowerShell wird auf unbestimmte Zeit gewartet.

Parametereigenschaften

Typ:Int64
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:TimeoutMSec

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

CommonParameters

Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.

Eingaben

None

Objekte können nicht an dieses Cmdlet weitergeleitet werden.

Ausgaben

None

Dieses Cmdlet generiert keine Ausgabe.

Hinweise

  • Um dieses Cmdlet in Windows Vista oder einer höheren Version des Windows-Betriebssystems zu verwenden, starten Sie Windows PowerShell mithilfe der Option "Als Administrator ausführen".

    Ereignisse, Ereignisabonnements und die Ereigniswarteschlange sind nur in der aktuellen Sitzung verfügbar. Wenn Sie die aktuelle Sitzung schließen, wird die Ereigniswarteschlange verworfen, und das Ereignisabonnement wird abgebrochen.