Delen via


Register-WmiEvent

Abonneren op een WMI-gebeurtenis (Windows Management Instrumentation).

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>]

Description

De Register-WmiEvent cmdlet abonneert zich op WMI-gebeurtenissen (Windows Management Instrumentation) op de lokale computer of op een externe computer.

Wanneer de geabonneerde WMI-gebeurtenis wordt gegenereerd, wordt deze toegevoegd aan de gebeurteniswachtrij in uw lokale sessie, zelfs als de gebeurtenis op een externe computer plaatsvindt. Gebruik de Get-Event cmdlet om gebeurtenissen in de gebeurteniswachtrij op te halen.

U kunt de parameters gebruiken om Register-WmiEvent u te abonneren op gebeurtenissen op externe computers en om de eigenschapswaarden op te geven van de gebeurtenissen waarmee u de gebeurtenis in de wachtrij kunt identificeren. U kunt ook de parameter Actie gebruiken om acties op te geven die moeten worden uitgevoerd wanneer een geabonneerde gebeurtenis wordt gegenereerd.

Wanneer u zich abonneert op een gebeurtenis, wordt er een gebeurtenisabonnee toegevoegd aan uw sessie. Gebruik de Get-EventSubscriber cmdlet om de gebeurtenisabonnees in de sessie op te halen. Als u het abonnement wilt annuleren, gebruikt u de Unregister-Event cmdlet, waarmee de gebeurtenisabonnee uit de sessie wordt verwijderd.

Nieuwe CIM-cmdlets (Common Information Model), geïntroduceerd Windows PowerShell 3.0, voeren dezelfde taken uit als de WMI-cmdlets. De CIM-cmdlets voldoen aan de WS-Management-standaarden (WSMan) en aan de CIM-standaard, waarmee de cmdlets dezelfde technieken kunnen gebruiken voor het beheren van computers waarop het Windows-besturingssysteem wordt uitgevoerd en computers waarop andere besturingssystemen worden uitgevoerd. In plaats van te gebruiken Register-WmiEvent, kunt u overwegen de cmdlet Register-CimIndicationEvent te gebruiken.

Voorbeelden

Voorbeeld 1: Abonneren op gebeurtenissen die zijn gegenereerd door een klasse

Met deze opdracht abonneert u zich op de gebeurtenissen die zijn gegenereerd door de Win32_ProcessStartTrace-klasse . Deze klasse genereert een gebeurtenis wanneer een proces wordt gestart.

Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"

Voorbeeld 2: Abonneren op aanmaakevenementen voor een proces

Met deze opdracht wordt een query gebruikt om u te abonneren op Win32_process gebeurtenissen voor het maken van exemplaren.

$wmiParameters = @{
  Query = "select * from __instancecreationevent within 5 where targetinstance isa 'win32_process'"
  SourceIdentifier = "WMIProcess"
  MessageData = "Test 01"
  TimeOut = 500
}
Register-WmiEvent @wmiParameters

Voorbeeld 3: Een actie gebruiken om te reageren op een gebeurtenis

In dit voorbeeld ziet u hoe u een actie gebruikt om te reageren op een gebeurtenis. In dit geval worden opdrachten in de huidige sessie naar een XML-bestand geschreven wanneer een proces wordt gestart Start-Process .

$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 {...

Wanneer u de parameter Actie gebruikt, Register-WmiEvent wordt een achtergrondtaak geretourneerd die de gebeurtenisactie vertegenwoordigt. U kunt de taak-cmdlets , zoals Get-Job en Receive-Job, gebruiken om de gebeurtenistaak te beheren.

Zie About Jobs (Taken) voor meer informatie.

Voorbeeld 4: Registreren voor gebeurtenissen op een externe computer

In dit voorbeeld worden gebeurtenissen geregistreerd op de externe Server01-computer.

Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "Start" -Computername Server01
Get-Event -SourceIdentifier "Start"

WMI retourneert de gebeurtenissen naar de lokale computer en slaat deze op in de gebeurteniswachtrij in de huidige sessie. Voer een lokale opdracht uit om de gebeurtenissen op Get-Event te halen.

Parameters

-Action

Hiermee geeft u opdrachten die de gebeurtenissen verwerken. De opdrachten in de actieparameter worden uitgevoerd wanneer een gebeurtenis wordt gegenereerd in plaats van de gebeurtenis naar de gebeurteniswachtrij te verzenden. Plaats de opdrachten tussen accolades ({}) om een scriptblok te maken.

De waarde van Action kan de $Eventvariabelen , $EventSubscriber, $Senderen $EventArgs$Args automatische variabelen bevatten, die informatie geven over de gebeurtenis aan het scriptblok Actie. Zie about_Automatic_Variables voor meer informatie.

Wanneer u een actie opgeeft, Register-WmiEvent wordt een gebeurtenistaakobject geretourneerd dat die actie vertegenwoordigt. U kunt de cmdlets gebruiken die het taaknaamwoord (de taak-cmdlets ) bevatten om de gebeurtenistaak te beheren.

Type:ScriptBlock
Position:101
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Class

Hiermee geeft u de gebeurtenis op waarop u zich abonneert. Voer de WMI-klasse in waarmee de gebeurtenissen worden gegenereerd. Voor elke opdracht is een klasse - of queryparameter vereist.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

Hiermee geeft u de naam van de computer waarop de opdracht wordt uitgevoerd. Standaard is dit de lokale computer.

Typ de NetBIOS-naam, een IP-adres of een volledig gekwalificeerde domeinnaam van de computer. Als u de lokale computer wilt opgeven, typt u de computernaam, een punt (.) of localhost.

Deze parameter is niet afhankelijk van externe communicatie met Windows PowerShell. U kunt de parameter ComputerName zelfs gebruiken als uw computer niet is geconfigureerd voor het uitvoeren van externe opdrachten.

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

-Credential

Hiermee geeft u een gebruikersaccount op dat gemachtigd is om deze actie uit te voeren. Standaard is dit de huidige gebruiker.

Typ een gebruikersnaam, zoals User01 of Domain01\User01, of voer een PSCredential-object in, zoals een object dat is gegenereerd door de Get-Credential cmdlet. Als u een gebruikersnaam typt, wordt u door deze cmdlet gevraagd om een wachtwoord.

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

-Forward

Geeft aan dat met deze cmdlet gebeurtenissen voor dit abonnement worden verzonden naar de sessie op de lokale computer. Gebruik deze parameter wanneer u zich registreert voor gebeurtenissen op een externe computer of in een externe sessie.

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

-MaxTriggerCount

Hiermee geeft u het maximum aantal triggers.

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

-MessageData

Hiermee geeft u eventuele aanvullende gegevens op die aan dit gebeurtenisabonnement moeten worden gekoppeld. De waarde van deze parameter wordt weergegeven in de eigenschap MessageData van alle gebeurtenissen die aan dit abonnement zijn gekoppeld.

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

-Namespace

Hiermee geeft u de naamruimte van de WMI-klasse.

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

-Query

Hiermee geeft u een query in WMI Query Language (WQL) die de WMI-gebeurtenisklasse identificeert, zoals: select * from __InstanceDeletionEvent.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-SourceIdentifier

Hiermee geeft u een naam op die u selecteert voor het abonnement. De naam die u selecteert, moet uniek zijn in de huidige sessie. De standaardwaarde is de GUID die door Windows PowerShell wordt toegewezen.

De waarde van deze parameter wordt weergegeven in de waarde van de eigenschap SourceIdentifier van het abonneeobject en van alle gebeurtenisobjecten die aan dit abonnement zijn gekoppeld.

Type:String
Position:100
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SupportEvent

Geeft aan dat met deze cmdlet het gebeurtenisabonnement wordt verborgen. Gebruik deze parameter wanneer het huidige abonnement deel uitmaakt van een complexer mechanisme voor gebeurtenisregistratie en deze niet onafhankelijk mag worden gedetecteerd.

Als u een abonnement wilt weergeven of annuleren dat is gemaakt met behulp van de parameter SupportEvent , geeft u de parameter Force van de Get-EventSubscriber en Unregister-Event cmdlets op.

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

-Timeout

Hiermee geeft u op hoe lang Windows PowerShell wacht totdat deze opdracht is voltooid.

De standaardwaarde, 0 (nul), betekent dat er geen time-out is en dat Windows PowerShell voor onbepaalde tijd moet wachten.

Type:Int64
Aliases:TimeoutMSec
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Invoerwaarden

None

U kunt geen objecten doorsluisen naar deze cmdlet.

Uitvoerwaarden

None

Met deze cmdlet wordt geen uitvoer gegenereerd.

Notities

Als u deze cmdlet wilt gebruiken in Windows Vista of een latere versie van het Windows-besturingssysteem, start u Windows PowerShell met behulp van de optie Als administrator uitvoeren.

Gebeurtenissen, gebeurtenisabonnementen en de gebeurteniswachtrij bestaan alleen in de huidige sessie. Als u de huidige sessie sluit, wordt de gebeurteniswachtrij verwijderd en wordt het gebeurtenisabonnement geannuleerd.