Compartir a través de


Register-WmiEvent

Se suscribe a un evento de Instrumental de administración de Windows (WMI).

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

El Register-WmiEvent cmdlet se suscribe a eventos de Instrumental de administración de Windows (WMI) en el equipo local o en un equipo remoto.

El evento de WMI suscrito se agrega a la cola de eventos de la sesión local cuando se genera, incluso si dicho evento se produce en un equipo remoto. Para obtener eventos en la cola de eventos, use el Get-Event cmdlet .

Puede usar los parámetros de Register-WmiEvent para suscribirse a eventos en equipos remotos y especificar los valores de propiedad de los eventos que pueden ayudarle a identificar el evento en la cola. También puede usar el parámetro Action para especificar las acciones que se deben realizar cuando se genera un evento suscrito.

Cuando se suscribe a un evento, se agrega un suscriptor de eventos a su sesión. Para obtener los suscriptores de eventos en la sesión, use el Get-EventSubscriber cmdlet . Para cancelar la suscripción, use el Unregister-Event cmdlet , que elimina el suscriptor de eventos de la sesión.

Los nuevos cmdlets de Common Information Model (CIM), introducidos en Windows PowerShell 3.0, realizan las mismas tareas que los cmdlets de WMI. Los cmdlets CIM cumplen con los estándares WS-Management (WSMan) y con el estándar CIM, lo que permite a los cmdlets usar las mismas técnicas para administrar equipos que ejecutan el sistema operativo Windows y los que ejecutan otros sistemas operativos. En lugar de usar , considere la posibilidad de usar Register-WmiEventel cmdlet Register-CimIndicationEvent .

Ejemplos

Ejemplo 1: Suscribirse a eventos generados por una clase

Este comando se suscribe a los eventos generados por la clase Win32_ProcessStartTrace . Esta clase genera un evento cada vez que se inicia un proceso.

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

Ejemplo 2: Suscribirse a eventos de creación para un proceso

Este comando usa una consulta para suscribirse a eventos de creación de instancia Win32_process.

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

Ejemplo 3: Usar una acción para responder a un evento

En este ejemplo se muestra cómo utilizar una acción para responder a un evento. En este caso, cuando se inicia un proceso, los Start-Process comandos de la sesión actual se escriben en un archivo 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 {...

Cuando se usa el parámetro Action , Register-WmiEvent devuelve un trabajo en segundo plano que representa la acción del evento. Puede usar los cmdlets job , como Get-Job y Receive-Job, para administrar el trabajo de evento.

Para más información, consulte about_Jobs (Acerca de los trabajos).

Ejemplo 4: Registro de eventos en un equipo remoto

En este ejemplo se realiza un registro para eventos en el equipo remoto Server01.

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

WMI devuelve los eventos al equipo local y los almacena en la cola de eventos de la sesión actual. Para recuperar los eventos, ejecute un comando local Get-Event .

Parámetros

-Action

Especifica los comandos que controlan los eventos. Los comandos del parámetro Action se ejecutan cuando se genera un evento en lugar de enviar el evento a la cola de eventos. Incluya los comandos entre llaves ({}) para crear un bloque de script.

El valor de Action puede incluir las $Eventvariables automáticas , $EventSubscriber, $Sender, $EventArgsy $Args , que proporcionan información sobre el evento al bloque De script de acción . Para obtener más información, vea about_Automatic_Variables.

Cuando se especifica una acción, Register-WmiEvent devuelve un objeto de trabajo de evento que representa esa acción. Puede usar los cmdlets que contienen el nombre job (los cmdlets job ) para administrar el trabajo de evento.

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

-Class

Especifica el evento al que se suscribe. Especifique la clase WMI que genera los eventos. Se requiere un parámetro Class o Query en cada comando.

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

-ComputerName

Especifica el nombre del equipo en el que se ejecuta el comando. La opción predeterminada es el equipo local.

Escriba el nombre de NetBIOS, una dirección IP o un nombre de dominio completo del equipo. Para especificar el equipo local, escriba el nombre del equipo, un punto (.) o localhost.

Este parámetro no utiliza la comunicación remota de Windows PowerShell. Puede usar el parámetro ComputerName incluso si el equipo no está configurado para ejecutar comandos remotos.

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

-Credential

Especifica una cuenta de usuario con permiso para realizar esta acción. El valor predeterminado es el usuario actual.

Escriba un nombre de usuario, como User01 o Domain01\User01, o escriba un objeto PSCredential , como uno generado por el Get-Credential cmdlet. Si escribe un nombre de usuario, este cmdlet le pedirá una contraseña.

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

-Forward

Indica que este cmdlet envía eventos para esta suscripción a la sesión en el equipo local. Utilice este parámetro cuando se registre en eventos de un equipo remoto o de una sesión remota.

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

-MaxTriggerCount

Especifica el número máximo de desencadenadores.

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

-MessageData

Especifica los datos adicionales que se asociarán con esta suscripción de evento. El valor de este parámetro aparece en la propiedad MessageData de todos los eventos asociados a esta suscripción.

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

-Namespace

Especifica el espacio de nombres de la clase WMI.

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

-Query

Especifica una consulta en el lenguaje de consulta WMI (WQL) que identifica la clase de eventos WMI, como: select * from __InstanceDeletionEvent.

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

-SourceIdentifier

Especifica un nombre que usted selecciona para la suscripción. El nombre que seleccione debe ser único en la sesión actual. El valor predeterminado es el GUID asignado por Windows PowerShell.

El valor de este parámetro aparece en el valor de la propiedad SourceIdentifier del objeto subscriber y de todos los objetos de evento asociados a esta suscripción.

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

-SupportEvent

Indica que este cmdlet oculta la suscripción de eventos. Utilice este parámetro cuando la suscripción actual forme parte de un mecanismo de registro de eventos más complejo y no deba detectarse de forma independiente.

Para ver o cancelar una suscripción creada mediante el parámetro SupportEvent, especifique el parámetro Force de los Get-EventSubscriber cmdlets y Unregister-Event .

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

-Timeout

Especifica cuánto tiempo espera Windows PowerShell a que finalice este comando.

El valor predeterminado, 0 (cero), significa que no hay tiempo de espera y hace que Windows PowerShell espere indefinidamente.

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

Entradas

None

No se pueden canalizar objetos a este cmdlet.

Salidas

None

Este cmdlet no genera ningún resultado.

Notas

Para usar este cmdlet en Windows Vista o una versión posterior del sistema operativo Windows, inicie Windows PowerShell mediante la opción Ejecutar como administrador.

La cola de eventos, las suscripciones de eventos y los eventos solo existen en la sesión actual. Si la cierra, la cola de eventos se descartará y la suscripción al evento se cancelará.