Register-WmiEvent
Sottoscrive un evento di Strumentazione gestione Windows (WMI).
Sintassi
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>]
Descrizione
Il Register-WmiEvent
cmdlet 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 degli eventi nella sessione locale anche se l'evento si verifica in un computer remoto. Per ottenere eventi nella coda di eventi, usare il Get-Event
cmdlet .
È possibile usare i parametri di Register-WmiEvent
per sottoscrivere gli eventi nei computer remoti e per specificare i valori delle proprietà degli eventi che consentono di identificare l'evento nella coda. È anche possibile usare il parametro Action per specificare le azioni da eseguire quando viene generato un evento sottoscritto.
Quando si sottoscrive un evento viene aggiunto un sottoscrittore di eventi alla sessione. Per ottenere i sottoscrittori di eventi nella sessione, usare il Get-EventSubscriber
cmdlet . Per annullare la sottoscrizione, usare il Unregister-Event
cmdlet , che elimina il sottoscrittore di eventi dalla sessione.
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 usare le stesse tecniche per gestire i computer che eseguono il sistema operativo Windows e quelli che eseguono altri sistemi operativi. Invece di usare Register-WmiEvent
, è consigliabile usare il cmdlet Register-CimIndicationEvent .
Esempio
Esempio 1: Sottoscrivere eventi generati da una classe
Questo comando sottoscrive gli eventi generati dalla classe Win32_ProcessStartTrace . Questa classe genera un evento ogni volta che viene avviato un processo.
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"
Esempio 2: Sottoscrivere eventi di creazione per un processo
Questo comando usa una query per sottoscrivere gli eventi di creazione istanze di Win32_process.
$wmiParameters = @{
Query = "select * from __instancecreationevent within 5 where targetinstance isa 'win32_process'"
SourceIdentifier = "WMIProcess"
MessageData = "Test 01"
TimeOut = 500
}
Register-WmiEvent @wmiParameters
Esempio 3: Usare un'azione per rispondere a un evento
Questo esempio illustra come usare un'azione per rispondere a un evento. In questo caso, all'avvio di un processo, tutti Start-Process
i comandi nella sessione corrente vengono scritti in un file 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 {...
Quando si usa il parametro Action , Register-WmiEvent
restituisce un processo in background che rappresenta l'azione dell'evento. È possibile usare i cmdlet job , ad esempio Get-Job
e Receive-Job
, per gestire il processo dell'evento.
Per altre informazioni, vedere About Jobs (Informazioni sui processi).
Esempio 4: Eseguire la registrazione per gli eventi in un computer remoto
Questo esempio esegue la registrazione agli eventi nel computer remoto Server01.
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "Start" -Computername Server01
Get-Event -SourceIdentifier "Start"
WMI restituisce gli eventi al computer locale e li archivia nella coda degli eventi nella sessione corrente. Per recuperare gli eventi, eseguire un comando locale Get-Event
.
Parametri
-Action
Specifica i comandi che gestiscono gli eventi. I comandi nel parametro Action vengono eseguiti quando viene generato un evento anziché inviare l'evento alla coda di eventi. Racchiudere i comandi tra parentesi graffe ({}
) per creare un blocco di script.
Il valore di Action può includere le $Event
variabili automatiche , $Sender
$EventSubscriber
, $EventArgs
, e $Args
, che forniscono informazioni sull'evento al blocco script Action. Per altre informazioni, vedere about_Automatic_Variables.
Quando si specifica un'azione, Register-WmiEvent
restituisce un oggetto processo evento che rappresenta tale azione. È possibile usare i cmdlet che contengono il sostantivo Job (cmdlet Job ) per gestire il processo dell'evento.
Tipo: | ScriptBlock |
Posizione: | 101 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Class
Specifica l'evento da sottoscrivere. Immettere la classe WMI che genera gli eventi. In ogni comando è necessario un parametro Class o Query .
Tipo: | String |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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 utilizzare il parametro ComputerName anche se il computer non è configurato per eseguire comandi remoti.
Tipo: | String |
Alias: | Cn |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Credential
Specifica un account utente che dispone delle autorizzazioni per 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 uno generato dal Get-Credential
cmdlet. Se si digita un nome utente, questo cmdlet richiede una password.
Tipo: | PSCredential |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Forward
Indica che questo cmdlet invia 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.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-MaxTriggerCount
Specifica il numero massimo di trigger.
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-MessageData
Specifica i dati aggiuntivi da associare alla sottoscrizione di eventi. Il valore di questo parametro viene visualizzato nella proprietà MessageData di tutti gli eventi associati a questa sottoscrizione.
Tipo: | PSObject |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Namespace
Specifica lo spazio dei nomi della classe WMI.
Tipo: | String |
Alias: | NS |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Query
Specifica una query in WQL (WMI Query Language) che identifica la classe di evento WMI, ad esempio : select * from __InstanceDeletionEvent
.
Tipo: | String |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | 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.
Tipo: | String |
Posizione: | 100 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-SupportEvent
Indica che questo cmdlet nasconde la sottoscrizione di eventi. Usare questo parametro quando la sottoscrizione corrente fa parte di un meccanismo di registrazione eventi più complesso e non deve essere individuata in modo indipendente.
Per visualizzare o annullare una sottoscrizione creata usando il parametro SupportEvent , specificare il parametro Force dei Get-EventSubscriber
cmdlet e Unregister-Event
.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Timeout
Specifica per quanto tempo Windows PowerShell attende il completamento di questo comando.
Il valore predefinito 0 (zero) indica che non è previsto alcun timeout, per cui l'attesa di Windows PowerShell è illimitata.
Tipo: | Int64 |
Alias: | TimeoutMSec |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
None
Non è possibile inviare tramite pipe oggetti a questo cmdlet.
Output
None
Questo cmdlet non genera alcun output.
Note
Per usare questo cmdlet in Windows Vista o in una versione successiva del sistema operativo Windows, avviare Windows PowerShell usando l'opzione Esegui come amministratore.
Gli eventi, le sottoscrizioni di eventi e la coda degli eventi esistono solo nella sessione corrente. Se si chiude la sessione corrente, la coda degli eventi viene rimossa e la sottoscrizione dell'evento viene annullata.