Share via


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 prenumerationsprenumererade WMI-händelsen aktiveras läggs den till i händelsekön i den lokala sessionen ä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 att prenumerera på händelser på fjärrdatorer och ange egenskapsvärdena för de händelser som kan hjälpa dig att identifiera händelsen i kön. Du kan också använda parametern Åtgärd för att ange åtgärder som ska vidtas när en prenumerationshändelse aktiveras.

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), introducerade Windows PowerShell 3.0, utför samma uppgifter som WMI-cmdletarna. CIM-cmdletarna följer WS-Management-standarderna (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å händelser för att skapa Win32_process instans.

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

$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. Om du vill hämta händelserna kör du ett lokalt Get-Event kommando.

Parametrar

-Action

Anger kommandon som hanterar händelserna. Kommandona i parametern Åtgärd körs när en händelse aktiveras i stället för att skicka händelsen till händelsekön. Omslut kommandona i 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ändelsejobbobjekt som representerar den åtgärden. Du kan använda de cmdletar som innehåller jobbets substantiv ( jobb-cmdletarna ) för att hantera händelsejobbet.

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

-Forward

Anger att den här cmdleten 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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxTriggerCount

Anger det maximala antalet utlösare.

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

-SupportEvent

Anger att den här cmdleten 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 skapades med hjälp av parametern SupportEvent anger duforce-parametern Get-EventSubscriber för cmdletarna och Unregister-Event .

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

-Timeout

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

Standardvärdet 0 (noll) innebär att det inte finns någon tidsgräns och att Windows PowerShell väntar på obestämd tid.

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

Indata

None

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

Utdata

None

Den här cmdleten genererar inga utdata.

Kommentarer

Om du vill använda den här cmdleten i Windows Vista eller en senare version av Windows-operativsystemet startar 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.