Register-WmiEvent

Prenumererar på en WMI-händelse (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

Cmdleten Register-WmiEvent prenumererar på WMI-händelser (Windows Management Instrumentation) på den lokala datorn eller på en fjärrdator.

När den prenumererande WMI-händelsen aktiveras läggs den till i händelsekön i din lokala session även om händelsen inträffar på en fjärrdator. Om du vill hämta händelser i händelsekön använder du cmdleten Get-Event .

Du kan använda parametrarna Register-WmiEvent för för att prenumerera på händelser på fjärrdatorer och för att ange egenskapsvärden för de händelser som kan hjälpa dig att identifiera händelsen i kön. Du kan också använda åtgärdsparametern för att ange åtgärder som ska vidtas när en prenumerationshändelse utlöses.

När du prenumererar på en händelse läggs en händelseprenumerant till i sessionen. Om du vill hämta händelseprenumeranterna i sessionen använder du cmdleten Get-EventSubscriber . Om du vill avbryta prenumerationen använder du cmdleten Unregister-Event som tar bort händelseprenumeranten från sessionen.

Nya CIM-cmdletar (Common Information Model), som introducerades Windows PowerShell 3.0, utför samma uppgifter som WMI-cmdletarna. CIM-cmdletarna följer WS-Management-standarder (WSMan) och CIM-standarden, vilket gör att cmdletarna kan använda samma tekniker för att hantera datorer som kör Windows-operativsystemet och de som kör andra operativsystem. I stället för att använda Register-WmiEventbör du överväga att använda cmdleten Register-CimIndicationEvent .

Exempel

Exempel 1: Prenumerera på händelser som genereras av en klass

Det här kommandot prenumererar på de händelser som genereras av klassen Win32_ProcessStartTrace . Den här klassen genererar en händelse när en process startar.

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

Exempel 2: Prenumerera på skapandehändelser för en process

Det här kommandot använder en fråga för att prenumerera på Win32_process instansskapandehändelser.

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

Exempel 3: Använd en åtgärd för att svara på en händelse

Det här exemplet visar hur du använder en åtgärd för att svara på en händelse. I det här fallet skrivs alla Start-Process kommandon i den aktuella sessionen till en XML-fil när en process startar.

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

När du använder parametern Register-WmiEventÅtgärd returnerar ett bakgrundsjobb som representerar händelseåtgärden. Du kan använda jobb-cmdletar, till exempel Get-Job och Receive-Job, för att hantera händelsejobbet.

Mer information finns i artikeln om jobb.

Exempel 4: Registrera dig för händelser på en fjärrdator

Det här exemplet registreras för händelser på server01-fjärrdatorn.

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

WMI returnerar händelserna till den lokala datorn och lagrar dem i händelsekön i den aktuella sessionen. Kör ett lokalt Get-Event kommando för att hämta händelserna.

Parametrar

-Action

Anger kommandon som hanterar händelserna. Kommandona i parametern Action körs när en händelse aktiveras i stället för att skicka händelsen till händelsekön. Omslut kommandona inom klammerparenteser ({}) för att skapa ett skriptblock.

Värdet för Åtgärd kan innehålla variablerna $Event, $EventSubscriber, $Sender, $EventArgsoch $Args automatisk, som ger information om händelsen till åtgärdsskriptblocket. Mer information finns i about_Automatic_Variables.

När du anger en åtgärd Register-WmiEvent returnerar ett händelsejobbsobjekt som representerar den åtgärden. Du kan använda de cmdletar som innehåller jobbets substantiv (jobb-cmdletar) för att hantera händelsejobbet.

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

Anger den händelse som du prenumererar på. Ange den WMI-klass som genererar händelserna. En klass - eller frågeparameter krävs i varje kommando.

Type:String
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-ComputerName

Anger namnet på den dator där kommandot körs. Standard är den lokala datorn.

Ange NetBIOS-namnet, en IP-adress eller ett fullständigt domännamn på datorn. Om du vill ange den lokala datorn skriver du datornamnet, en punkt (.) eller localhost.

Den här parametern förlitar sig inte på Windows PowerShell fjärrkommunikation. Du kan använda parametern ComputerName även om datorn inte är konfigurerad för att köra fjärrkommandon.

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

Anger ett användarkonto som har behörighet att utföra den här åtgärden. Standard är den aktuella användaren.

Ange ett användarnamn, till exempel User01 eller Domain01\User01, eller ange ett PSCredential-objekt , till exempel ett som genereras av cmdleten Get-Credential . Om du skriver ett användarnamn uppmanas du att ange ett lösenord i den här cmdleten.

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

Anger att denna cmdlet skickar händelser för den här prenumerationen till sessionen på den lokala datorn. Använd den här parametern när du registrerar dig för händelser på en fjärrdator eller i en fjärrsession.

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

Anger det maximala antalet utlösare.

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

Anger eventuella ytterligare data som ska associeras med den här händelseprenumerationen. Värdet för den här parametern visas i egenskapen MessageData för alla händelser som är associerade med den här prenumerationen.

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

Anger namnområdet för WMI-klassen.

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

Anger en fråga i WMI Query Language (WQL) som identifierar WMI-händelseklassen, till exempel: select * from __InstanceDeletionEvent.

Type:String
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-SourceIdentifier

Anger ett namn som du väljer för prenumerationen. Namnet som du väljer måste vara unikt i den aktuella sessionen. Standardvärdet är det GUID som Windows PowerShell tilldelar.

Värdet för den här parametern visas i värdet för egenskapen SourceIdentifier för prenumerantobjektet och för alla händelseobjekt som är associerade med den här prenumerationen.

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

Anger att denna cmdlet döljer händelseprenumerationen. Använd den här parametern när den aktuella prenumerationen ingår i en mer komplex mekanism för händelseregistrering och den inte bör identifieras oberoende av varandra.

Om du vill visa eller avbryta en prenumeration som har skapats med hjälp av parametern SupportEvent anger du force-parametern Get-EventSubscriber för cmdletarna och Unregister-Event .

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

Anger hur länge Windows PowerShell väntar på att kommandot ska slutföras.

Standardvärdet 0 (noll) innebär att tidsgränsen inte överskrids och att Windows PowerShell väntar på obestämd tid.

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

Indata

None

Du kan inte skicka objekt till den här cmdleten.

Utdata

None

Denna cmdlet genererar inga utdata.

Kommentarer

Om du vill använda denna cmdlet i Windows Vista eller en senare version av Windows-operativsystemet börjar du Windows PowerShell med alternativet Kör som administratör.

Händelser, händelseprenumerationer och händelsekön finns bara i den aktuella sessionen. Om du stänger den aktuella sessionen ignoreras händelsekön och händelseprenumerationen avbryts.