Condividi tramite


Register-WmiEvent

Sottoscrive un evento strumentazione gestione Windows (WMI).

Sintassi

class (Impostazione predefinita)

Register-WmiEvent
    [-Class] <String>
    [[-SourceIdentifier] <String>]
    [[-Action] <ScriptBlock>]
    [-Namespace <String>]
    [-Credential <PSCredential>]
    [-ComputerName <String>]
    [-Timeout <Int64>]
    [-MessageData <PSObject>]
    [-SupportEvent]
    [-Forward]
    [-MaxTriggerCount <Int32>]
    [<CommonParameters>]

query

Register-WmiEvent
    [-Query] <String>
    [[-SourceIdentifier] <String>]
    [[-Action] <ScriptBlock>]
    [-Namespace <String>]
    [-Credential <PSCredential>]
    [-ComputerName <String>]
    [-Timeout <Int64>]
    [-MessageData <PSObject>]
    [-SupportEvent]
    [-Forward]
    [-MaxTriggerCount <Int32>]
    [<CommonParameters>]

Descrizione

Il cmdlet Register-WmiEvent sottoscrive gli eventi di Strumentazione gestione Windows (WMI) nel computer locale o in un computer remoto.

Quando viene generato l'evento WMI sottoscritto, viene aggiunto alla coda eventi nella sessione locale anche se l'evento si verifica in un computer remoto. Per ottenere eventi nella coda di eventi, usare il cmdlet Get-Event.

È possibile utilizzare i parametri di Register-WmiEvent per sottoscrivere gli eventi nei computer remoti e specificare i valori delle proprietà degli eventi che consentono di identificare l'evento nella coda. È inoltre possibile utilizzare il parametro Action per specificare le azioni da eseguire quando viene generato un evento sottoscritto.

Quando si sottoscrive un evento, alla sessione viene aggiunto un sottoscrittore di eventi. Per ottenere i sottoscrittori di eventi nella sessione, usare il cmdlet Get-EventSubscriber. Per annullare la sottoscrizione, usare il cmdlet Unregister-Event che elimina il sottoscrittore dell'evento dalla sessione.

I nuovi cmdlet CIM (Common Information Model), introdotti in Windows PowerShell 3.0, eseguono le stesse attività dei cmdlet WMI. I cmdlet CIM sono conformi agli standard WS-Management (WSMan) e allo standard CIM, che consente ai cmdlet di utilizzare le stesse tecniche per gestire i computer che eseguono il sistema operativo Windows e quelli che eseguono altri sistemi operativi. Anziché utilizzare Register-WmiEvent, è consigliabile utilizzare il cmdlet Register-CimIndicationEvent .

Esempio

Esempio 1: Sottoscrivere eventi generati da una classe

PS C:\> Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"

Questo comando sottoscrive gli eventi generati dalla classe Win32_ProcessStartTrace . Questa classe genera un evento ogni volta che viene avviato un processo.

Esempio 2: Sottoscrivere gli eventi di creazione per un processo

PS C:\> Register-WmiEvent -Query "select * from __instancecreationevent within 5 where targetinstance isa 'win32_process'" -SourceIdentifier "WMIProcess" -MessageData "Test 01" -TimeOut 500

Questo comando utilizza una query per sottoscrivere Win32_process eventi di creazione dell'istanza.

Esempio 3: utilizzare un'azione per rispondere a un evento

PS C:\> $action = { Get-History | where { $_.commandline -like "*start-process*" } | export-cliXml "commandHistory.clixml" }
PS C:\> Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted" -Action $action
Id    Name            State      HasMoreData   Location  Command
--    ----            -----      -----------   --------  -------
1     ProcessStarted  NotStarted False                   get-history | where {...

In questo esempio viene illustrato come utilizzare un'azione per rispondere a un evento. In questo caso, all'avvio di un processo, tutti i comandi Start-Process nella sessione corrente vengono scritti in un file XML.

Quando si utilizza il parametro Action , Register-WmiEvent restituisce un processo in background che rappresenta l'azione dell'evento. È possibile utilizzare i cmdlet Job , ad esempio Get-Job e Receive-Job, per gestire il processo dell'evento.

Per ulteriori informazioni, vedere about_Jobs.

Esempio 4: Registrarsi per gli eventi in un computer remoto

PS C:\> Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "Start" -Computername Server01
PS C:\> Get-Event -SourceIdentifier "Start"

In questo esempio viene eseguita la registrazione degli eventi nel computer remoto Server01.

WMI restituisce gli eventi al computer locale e li archivia nella coda eventi della sessione corrente. Per recuperare gli eventi, eseguire un comando Get-Event locale.

Parametri

-Action

Specifica i comandi che gestiscono gli eventi. I comandi del parametro Action vengono eseguiti quando viene generato un evento anziché inviare l'evento alla coda eventi. Racchiudere i comandi tra parentesi graffe ( { } ) per creare un blocco di script.

Il valore di Action può includere le variabili $Event, $EventSubscriber, $Sender, $EventArgs e $Args automatiche, che forniscono informazioni sull'evento al blocco Action script . Per ulteriori informazioni, vedere about_Automatic_Variables.

Quando si specifica un'azione, Register-WmiEvent restituisce un oggetto processo evento che rappresenta tale azione. È possibile utilizzare i cmdlet che contengono il sostantivo Job (i cmdlet Job ) per gestire il processo dell'evento.

Proprietà dei parametri

Tipo:ScriptBlock
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:101
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Class

Specifica l'evento a cui si sta sottoscrivendo. Immettere la classe WMI che genera gli eventi. In ogni comando è necessario un parametro Class o Query .

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

class
Posizione:0
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-ComputerName

Specifica il nome del computer in cui viene eseguito il comando. Il valore predefinito è il computer locale.

Digitare il nome NetBIOS, un indirizzo IP o un nome di dominio completo del computer. Per specificare il computer locale, digitare il nome del computer, un punto (.) o localhost.

Questo parametro non si basa sulla comunicazione remota di Windows PowerShell. È possibile usare il parametro ComputerName anche se il computer non è configurato per eseguire comandi remoti.

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False
Alias:CN

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Credential

Specifica un account utente autorizzato a eseguire questa azione. Il valore predefinito è l'utente corrente.

Digitare un nome utente, ad esempio User01 o Domain01\User01, oppure immettere un oggetto PSCredential, ad esempio quello generato dal cmdlet Get-Credential. Se si digita un nome utente, questo cmdlet richiede una password.

Proprietà dei parametri

Tipo:PSCredential
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Forward

Indica che questo cmdlet invia gli eventi per questa sottoscrizione alla sessione nel computer locale. Usare questo parametro quando si esegue la registrazione per gli eventi in un computer remoto o in una sessione remota.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-MaxTriggerCount

Specifica il numero massimo di trigger.

Proprietà dei parametri

Tipo:Int32
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-MessageData

Specifica eventuali dati aggiuntivi da associare a questa sottoscrizione di eventi. Il valore di questo parametro viene visualizzato nella proprietà MessageData di tutti gli eventi associati alla sottoscrizione.

Proprietà dei parametri

Tipo:PSObject
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Namespace

Specifica lo spazio dei nomi della classe WMI.

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False
Alias:NS

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Query

Specifica una query in WMI Query Language (WQL) che identifica la classe di evento WMI, ad esempio: select * from __InstanceDeletionEvent.

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

query
Posizione:0
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-SourceIdentifier

Specifica un nome selezionato per la sottoscrizione. Il nome selezionato deve essere univoco nella sessione corrente. Il valore predefinito è il GUID assegnato da Windows PowerShell.

Il valore di questo parametro viene visualizzato nel valore della proprietà SourceIdentifier dell'oggetto sottoscrittore e di tutti gli oggetti evento associati a questa sottoscrizione.

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:100
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-SupportEvent

Indica che questo cmdlet nasconde la sottoscrizione dell'evento. Usare questo parametro quando la sottoscrizione corrente fa parte di un meccanismo di registrazione eventi più complesso e non deve essere individuato in modo indipendente.

Per visualizzare o annullare una sottoscrizione creata utilizzando il parametro SupportEvent , specificare il parametro Force dei cmdlet Get-EventSubscriber e Unregister-Event.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Timeout

Specifica il tempo di attesa di Windows PowerShell per il completamento del comando.

Il valore predefinito, 0 (zero), indica che non è presente alcun timeout e che Windows PowerShell rimane in attesa per un periodo di tempo indefinito.

Proprietà dei parametri

Tipo:Int64
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False
Alias:TimeoutMSec

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

CommonParameters

Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.

Input

None

Non è possibile inviare tramite pipe oggetti a questo cmdlet.

Output

None

Questo cmdlet non genera alcun output.

Note

  • Per utilizzare questo cmdlet in Windows Vista o in una versione successiva del sistema operativo Windows, avviare Windows PowerShell utilizzando l'opzione Esegui come amministratore.

    Gli eventi, le sottoscrizioni di eventi e la coda di eventi esistono solo nella sessione corrente. Se si chiude la sessione corrente, la coda di eventi viene eliminata e la sottoscrizione di eventi viene annullata.