Register-WmiEvent
Abonniert ein Ereignis der Windows-Verwaltungsinstrumentation (Windows Management Instrumentation, WMI.
Syntax
Register-WmiEvent
[-Namespace <String>]
[-Credential <PSCredential>]
[-ComputerName <String>]
[-Class] <String>
[-Timeout <Int64>]
[[-SourceIdentifier] <String>]
[[-Action] <ScriptBlock>]
[-MessageData <PSObject>]
[-SupportEvent]
[-Forward]
[-MaxTriggerCount <Int32>]
[<CommonParameters>]
Register-WmiEvent
[-Namespace <String>]
[-Credential <PSCredential>]
[-ComputerName <String>]
[-Query] <String>
[-Timeout <Int64>]
[[-SourceIdentifier] <String>]
[[-Action] <ScriptBlock>]
[-MessageData <PSObject>]
[-SupportEvent]
[-Forward]
[-MaxTriggerCount <Int32>]
[<CommonParameters>]
Beschreibung
Das Register-WmiEvent
Cmdlet abonniert Windows Management Instrumentation (WMI)-Ereignisse auf dem lokalen Computer oder auf einem Remotecomputer.
Wenn das abonnierte WMI-Ereignis ausgelöst wird, wird es der Ereigniswarteschlange in der lokalen Sitzung hinzugefügt, auch wenn das Ereignis auf einem Remotecomputer eintritt. Verwenden Sie das Get-Event
Cmdlet, um Ereignisse in der Ereigniswarteschlange abzurufen.
Sie können die Parameter 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 Action-Parameter 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. Verwenden Sie das Get-EventSubscriber
Cmdlet, um die Ereignisabonnenten in der Sitzung abzurufen. Verwenden Sie zum Kündigen des Abonnements das Unregister-Event
Cmdlet, 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 den WS-Management-Standards (WSMan) und dem CIM-Standard, mit dem die Cmdlets dieselben Techniken zum Verwalten von Computern verwenden können, die das Windows-Betriebssystem ausführen, und diejenigen, die andere Betriebssysteme ausführen. Verwenden Sie anstelle der Verwendung Register-WmiEvent
das Cmdlet Register-CimIndicationEvent .
Beispiele
Beispiel 1: Abonnieren von Ereignissen, die von einer Klasse generiert werden
Dieser Befehl abonniert die von der Win32_ProcessStartTrace Klasse generierten Ereignisse. Diese Klasse löst immer dann ein Ereignis aus, wenn ein Prozess gestartet wird.
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"
Beispiel 2: Abonnieren von Erstellungsereignissen für einen Prozess
In diesem Befehl werden Win32_process-Instanzerstellungsereignisse mithilfe einer Abfrage abonniert.
$wmiParameters = @{
Query = "select * from __instancecreationevent within 5 where targetinstance isa 'win32_process'"
SourceIdentifier = "WMIProcess"
MessageData = "Test 01"
TimeOut = 500
}
Register-WmiEvent @wmiParameters
Beispiel 3: Verwenden einer Aktion zum Reagieren auf ein Ereignis
In diesem Beispiel wird die Verwendung einer Aktion als Antwort auf ein Ereignis veranschaulicht. In diesem Fall werden beim Starten eines Prozesses alle Start-Process
Befehle in der aktuellen Sitzung in eine XML-Datei geschrieben.
$action = { Get-History | where { $_.commandline -like "*start-process*" } | export-cliXml "commandHistory.clixml" }
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted" -Action $action
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 ProcessStarted NotStarted False get-history | where {...
Wenn Sie den Action-Parameter verwenden, wird ein Hintergrundauftrag zurückgegeben, Register-WmiEvent
der die Ereignisaktion darstellt. Sie können die Job-Cmdlets wie Get-Job
und Receive-Job
zum Verwalten des Ereignisauftrags verwenden.
Weitere Informationen finden Sie unter about_Jobs.
Beispiel 4: Registrieren für Ereignisse auf einem Remotecomputer
In diesem Beispiel werden Ereignisse auf dem Remotecomputer %%amp;quot;Server01%%amp;quot; registriert.
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "Start" -Computername Server01
Get-Event -SourceIdentifier "Start"
WMI gibt die Ereignisse an den lokalen Computer zurück und speichert sie in der Ereigniswarteschlange in der aktuellen Sitzung. Um die Ereignisse abzurufen, führen Sie einen lokalen Get-Event
Befehl aus.
Parameter
-Action
Gibt Befehle an, die die Ereignisse behandeln. Die Befehle im Aktionsparameter 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 $Event
Variablen , $EventSubscriber
, $Sender
, $EventArgs
und $Args
automatische Variablen enthalten, die Informationen zum Ereignis für den Aktionsskriptblock bereitstellen. Weitere Informationen finden Sie unter about_Automatic_Variables.
Wenn Sie eine Aktion angeben, wird ein Ereignisauftragsobjekt zurückgegeben, Register-WmiEvent
das diese Aktion darstellt. Sie können die Cmdlets verwenden, die das Substantiv "Auftrag " (die Cmdlets "Auftrag ") enthalten, um den Ereignisauftrag zu verwalten.
Typ: | ScriptBlock |
Position: | 101 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Class
Gibt das Ereignis an, das Sie abonnieren. Geben Sie die WMI-Klasse ein, die die Ereignisse generiert. In jedem Befehl ist ein Class - oder Query-Parameter erforderlich.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ComputerName
Gibt den Namen des Computers an, auf dem der Befehl ausgeführt wird. Die Standardeinstellung ist der lokale Computer.
Geben Sie den NetBIOS-Namen, eine IP-Adresse oder den vollqualifizierten Domänennamen des Computers ein. Um den lokalen Computer anzugeben, geben Sie den Computernamen, einen Punkt (.
) oder localhost ein.
Dieser Parameter beruht nicht auf Windows PowerShell-Remoting. Sie können den Parameter "ComputerName " auch dann verwenden, 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 |
-Credential
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 Get-Credential
Cmdlet generiertes Objekt. Wenn Sie einen Benutzernamen eingeben, werden Sie von diesem Cmdlet aufgefordert, ein Kennwort einzugeben.
Typ: | PSCredential |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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 auf einem Remotecomputer oder in einer Remotesitzung für Ereignisse registrieren.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-MaxTriggerCount
Gibt die maximale Auslöseranzahl an.
Typ: | Int32 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-MessageData
Gibt alle weiteren 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.
Typ: | PSObject |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Namespace
Gibt den Namespace der WMI-Klasse an.
Typ: | String |
Aliase: | NS |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Query
Gibt eine Abfrage in der WMI-Abfragesprache (WQL) an, die die WMI-Ereignisklasse identifiziert, z. B.: select * from __InstanceDeletionEvent
.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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 von Windows PowerShell zugewiesene GUID.
Der Wert dieses Parameters wird im Wert der SourceIdentifier-Eigenschaft des Abonnentenobjekts und aller diesem Abonnement zugeordneten Ereignisobjekte angezeigt.
Typ: | String |
Position: | 100 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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 erfasst werden soll.
Wenn Sie ein Abonnement anzeigen oder kündigen möchten, das mit dem Parameter SupportEvent erstellt wurde, geben Sie den Force-Parameter der und Unregister-Event
cmdlets Get-EventSubscriber
an.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Timeout
Gibt an, wie lange Windows PowerShell auf den Abschluss dieses Befehls wartet.
Der Standardwert %%amp;quot;0%%amp;quot; (null) bedeutet, dass kein Timeout vorliegt und Windows PowerShell unbegrenzt wartet.
Typ: | Int64 |
Aliase: | TimeoutMSec |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
None
Objekte können nicht an dieses Cmdlet weitergereicht 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 vorhanden. Wenn Sie die aktuelle Sitzung schließen, wird die Ereigniswarteschlange verworfen, und das Ereignisabonnement wird abgebrochen.