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-WmiEventdas 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-Jobzum 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 $EventVariablen , $EventSubscriber, $Sender, $EventArgsund $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.

Type:ScriptBlock
Position:101
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 "Do Standard 01\User01", oder geben Sie ein PSCredential-Objekt ein, z. B. ein objekt, das Get-Credential vom Cmdlet generiert wurde. Wenn Sie einen Benutzernamen eingeben, werden Sie von diesem Cmdlet aufgefordert, ein Kennwort einzugeben.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

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

-MaxTriggerCount

Gibt die maximale Auslöseranzahl an.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

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

-Namespace

Gibt den Namespace der WMI-Klasse an.

Type:String
Aliases:NS
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Query

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

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Position:100
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:Int64
Aliases:TimeoutMSec
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.