Udostępnij za pośrednictwem


Register-WmiEvent

Subskrybuje zdarzenie instrumentacji zarządzania Windows (WMI).

Składnia

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

Opis

Polecenie Register-WmiEvent cmdlet subskrybuje zdarzenia instrumentacji zarządzania Windows (WMI) na komputerze lokalnym lub na komputerze zdalnym.

Po wystąpieniu subskrybowanego zdarzenia usługi WMI jest dodawane do kolejki zdarzeń w sesji lokalnej, nawet jeśli zdarzenie występuje na komputerze zdalnym. Aby uzyskać zdarzenia w kolejce zdarzeń, użyj Get-Event polecenia cmdlet .

Możesz użyć parametrów Register-WmiEvent , aby subskrybować zdarzenia na komputerach zdalnych i określić wartości właściwości zdarzeń, które mogą pomóc zidentyfikować zdarzenie w kolejce. Możesz również użyć parametru Akcja, aby określić akcje, które mają być podejmowane po wystąpieniu subskrybowanego zdarzenia.

Po zasubskrybowaniu zdarzenia subskrybent zdarzenia zostanie dodany do sesji. Aby uzyskać subskrybentów zdarzeń w sesji, użyj Get-EventSubscriber polecenia cmdlet . Aby anulować subskrypcję, użyj Unregister-Event polecenia cmdlet , które usuwa subskrybenta zdarzeń z sesji.

Nowe polecenia cmdlet modelu wspólnych informacji (CIM, Common Information Model), wprowadziły program Windows PowerShell 3.0, wykonują te same zadania co polecenia cmdlet usługi WMI. Polecenia cmdlet ciM są zgodne ze standardami WS-Management (WSMan) i standardem CIM, który umożliwia poleceń cmdlet używanie tych samych technik do zarządzania komputerami z systemem operacyjnym Windows i tymi, które uruchamiają inne systemy operacyjne. Zamiast używać Register-WmiEventpolecenia , rozważ użycie polecenia cmdlet Register-CimIndicationEvent .

Przykłady

Przykład 1: Subskrybowanie zdarzeń wygenerowanych przez klasę

To polecenie subskrybuje zdarzenia wygenerowane przez klasę Win32_ProcessStartTrace . Ta klasa zgłasza zdarzenie za każdym razem, gdy rozpocznie się proces.

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

Przykład 2. Subskrybowanie zdarzeń tworzenia dla procesu

To polecenie używa zapytania do subskrybowania Win32_process zdarzeń tworzenia wystąpienia.

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

Przykład 3. Używanie akcji w celu reagowania na zdarzenie

W tym przykładzie pokazano, jak użyć akcji w celu reagowania na zdarzenie. W takim przypadku po uruchomieniu procesu wszystkie Start-Process polecenia w bieżącej sesji są zapisywane w pliku XML.

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

Gdy używasz parametru Akcja , Register-WmiEvent zwraca zadanie w tle reprezentujące akcję zdarzenia. Polecenia cmdlet zadania, takie jak Get-Job i Receive-Job, umożliwiają zarządzanie zadaniem zdarzenia.

Aby uzyskać więcej informacji, zobacz opis polecenia about_Jobs.

Przykład 4: Rejestrowanie zdarzeń na komputerze zdalnym

W tym przykładzie są rejestrowane zdarzenia na komputerze zdalnym Server01.

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

Usługa WMI zwraca zdarzenia na komputerze lokalnym i przechowuje je w kolejce zdarzeń w bieżącej sesji. Aby pobrać zdarzenia, uruchom polecenie lokalne Get-Event .

Parametry

-Action

Określa polecenia obsługujące zdarzenia. Polecenia w parametrze Akcja są uruchamiane po wystąpieniu zdarzenia zamiast wysyłania zdarzenia do kolejki zdarzeń. Dołącz polecenia w nawiasach klamrowych ({}), aby utworzyć blok skryptu.

Wartość Akcja może zawierać $Eventzmienne , , $EventSubscriber$Sender, $EventArgsi $Args automatyczne, które dostarczają informacje o zdarzeniu do bloku skryptu akcji. Aby uzyskać więcej informacji, zobacz about_Automatic_Variables.

Po określeniu akcji Register-WmiEvent zwraca obiekt zadania zdarzenia, który reprezentuje akcję. Aby zarządzać zadaniem zdarzenia, możesz użyć poleceń cmdlet, które zawierają aplet Job noun ( polecenia cmdlet zadania ).

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

-Class

Określa zdarzenie, do którego subskrybujesz. Wprowadź klasę WMI, która generuje zdarzenia. Parametr Class lub Query jest wymagany w każdym poleceniu.

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

-ComputerName

Określa nazwę komputera, na którym jest uruchamiane polecenie. Wartość domyślna to komputer lokalny.

Wpisz nazwę NetBIOS, adres IP lub w pełni kwalifikowaną nazwę domeny komputera. Aby określić komputer lokalny, wpisz nazwę komputera, kropkę (.) lub localhost.

Ten parametr nie opiera się na komunikacji zdalnej programu Windows PowerShell. Można użyć parametru ComputerName , nawet jeśli komputer nie jest skonfigurowany do uruchamiania poleceń zdalnych.

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

-Credential

Określa konto użytkownika, które ma uprawnienia do wykonania tej akcji. Wartość domyślna to użytkownik bieżący.

Wpisz nazwę użytkownika, taką jak User01 lub Domain01\User01, lub wprowadź obiekt PSCredential , taki jak jeden wygenerowany przez Get-Credential polecenie cmdlet. Jeśli wpiszesz nazwę użytkownika, to polecenie cmdlet wyświetli monit o podanie hasła.

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

-Forward

Wskazuje, że to polecenie cmdlet wysyła zdarzenia dla tej subskrypcji do sesji na komputerze lokalnym. Użyj tego parametru podczas rejestrowania zdarzeń na komputerze zdalnym lub w sesji zdalnej.

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

-MaxTriggerCount

Określa maksymalną liczbę wyzwalaczy.

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

-MessageData

Określa wszelkie dodatkowe dane, które mają być skojarzone z tą subskrypcją zdarzeń. Wartość tego parametru jest wyświetlana we właściwości MessageData wszystkich zdarzeń skojarzonych z tą subskrypcją.

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

-Namespace

Określa przestrzeń nazw klasy WMI.

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

-Query

Określa zapytanie w języku WMI Query Language (WQL), które identyfikuje klasę zdarzeń usługi WMI, na przykład: select * from __InstanceDeletionEvent.

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

-SourceIdentifier

Określa nazwę wybraną dla subskrypcji. Wybrana nazwa musi być unikatowa w bieżącej sesji. Wartość domyślna to identyfikator GUID przypisywany przez program Windows PowerShell.

Wartość tego parametru jest wyświetlana w wartości właściwości SourceIdentifier obiektu subskrybenta i wszystkich obiektów zdarzeń skojarzonych z tą subskrypcją.

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

-SupportEvent

Wskazuje, że to polecenie cmdlet ukrywa subskrypcję zdarzeń. Użyj tego parametru, gdy bieżąca subskrypcja jest częścią bardziej złożonego mechanizmu rejestracji zdarzeń i nie powinna być odnajdywane niezależnie.

Aby wyświetlić lub anulować subskrypcję utworzoną przy użyciu parametru SupportEvent, określ parametr Get-EventSubscriber Force poleceń cmdlet i Unregister-Event .

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

-Timeout

Określa, jak długo program Windows PowerShell czeka na zakończenie tego polecenia.

Wartość domyślna 0 (zero) oznacza, że nie ma limitu czasu i powoduje, że program Windows PowerShell czeka na czas nieokreślony.

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

Dane wejściowe

None

Nie można potokować obiektów do tego polecenia cmdlet.

Dane wyjściowe

None

To polecenie cmdlet nie generuje żadnych danych wyjściowych.

Uwagi

Aby użyć tego polecenia cmdlet w systemie Windows Vista lub nowszej wersji systemu operacyjnego Windows, uruchom program Windows PowerShell przy użyciu opcji Uruchom jako administrator.

Zdarzenia, subskrypcje zdarzeń i kolejka zdarzeń istnieją tylko w bieżącej sesji. Jeśli zamkniesz bieżącą sesję, kolejka zdarzeń zostanie odrzucona i subskrypcja zdarzeń zostanie anulowana.