Compartir a través de


New-WinEvent

Crea un nuevo evento de Windows para el proveedor de eventos especificado.

Sintaxis

New-WinEvent
   [-ProviderName] <String>
   [-Id] <Int32>
   [-Version <Byte>]
   [[-Payload] <Object[]>]
   [<CommonParameters>]

Description

Este cmdlet solo está disponible en la plataforma Windows.

El New-WinEvent cmdlet crea un evento de seguimiento de eventos para Windows (ETW) para un proveedor de eventos. Puede usar este cmdlet para agregar eventos a canales ETW desde PowerShell.

Ejemplos

Ejemplo 1: Creación de un evento

New-WinEvent -ProviderName Microsoft-Windows-PowerShell -Id 45090 -Payload @("Workflow", "Running")

Este comando usa el cmdlet para crear el New-WinEvent evento 45090 para el proveedor Microsoft-Windows-PowerShell.

Ejemplo 2: Obtención de la plantilla de un evento

En este ejemplo, Get-WinEvent se usa para obtener la plantilla para el identificador de evento 8007 del proveedor de eventos de directiva de grupo. Observe que el evento tiene dos formatos.

En la versión 0, el campo IsMachine es un valor booleano. En la versión 1, el campo IsMachine es un valor entero sin signo.

(Get-WinEvent -ListProvider Microsoft-Windows-GroupPolicy).Events | Where-Object Id -eq 8007

Id          : 8007
Version     : 0
LogLink     : System.Diagnostics.Eventing.Reader.EventLogLink
Level       : System.Diagnostics.Eventing.Reader.EventLevel
Opcode      : System.Diagnostics.Eventing.Reader.EventOpcode
Task        : System.Diagnostics.Eventing.Reader.EventTask
Keywords    : {}
Template    : <template xmlns="http://schemas.microsoft.com/win/2004/08/events">
                <data name="PolicyElaspedTimeInSeconds" inType="win:UInt32" outType="xs:unsignedInt"/>
                <data name="ErrorCode" inType="win:UInt32" outType="win:HexInt32"/>
                <data name="PrincipalSamName" inType="win:UnicodeString" outType="xs:string"/>
                <data name="IsMachine" inType="win:Boolean" outType="xs:boolean"/>
                <data name="IsConnectivityFailure" inType="win:Boolean" outType="xs:boolean"/>
              </template>

Description : Completed periodic policy processing for user %3 in %1 seconds.

Id          : 8007
Version     : 1
LogLink     : System.Diagnostics.Eventing.Reader.EventLogLink
Level       : System.Diagnostics.Eventing.Reader.EventLevel
Opcode      : System.Diagnostics.Eventing.Reader.EventOpcode
Task        : System.Diagnostics.Eventing.Reader.EventTask
Keywords    : {}
Template    : <template xmlns="http://schemas.microsoft.com/win/2004/08/events">
                <data name="PolicyElaspedTimeInSeconds" inType="win:UInt32" outType="xs:unsignedInt"/>
                <data name="ErrorCode" inType="win:UInt32" outType="win:HexInt32"/>
                <data name="PrincipalSamName" inType="win:UnicodeString" outType="xs:string"/>
                <data name="IsMachine" inType="win:UInt32" outType="xs:unsignedInt"/>
                <data name="IsConnectivityFailure" inType="win:Boolean" outType="xs:boolean"/>
              </template>

Description : Completed periodic policy processing for user %3 in %1 seconds.

La propiedad Description contiene el mensaje que se escribe en el registro de eventos. El %3 valor y %1 son marcadores de posición para los valores pasados a la plantilla. La %3 cadena se reemplaza por el valor pasado al campo PrincipalSamName . La %1 cadena se reemplaza por el valor pasado al campo PolicyElaspedTimeInSeconds .

Ejemplo 3: Creación de un nuevo evento mediante una plantilla con versiones

En este ejemplo se muestra cómo crear un evento mediante una versión de plantilla específica.

$Payload = @(300, [uint32]'0x8001011f', $env:USERNAME, 0, 1)
New-WinEvent -ProviderName Microsoft-Windows-GroupPolicy -Id 8007 -Version 1 -Payload $Payload
Get-winEvent -ProviderName Microsoft-Windows-GroupPolicy -MaxEvents 1

ProviderName: Microsoft-Windows-GroupPolicy

TimeCreated            Id LevelDisplayName Message
-----------            -- ---------------- -------
5/4/2022 8:40:24 AM  8007 Information      Completed periodic policy processing for user User1 in 300 seconds

Si los valores de la carga no coinciden con los tipos de la plantilla, el evento se registra, pero la carga contiene un error.

Parámetros

-Id

Especifica un identificador de evento registrado en el proveedor de eventos.

Tipo:Int32
Posición:1
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Payload

La carga es una matriz de valores pasados como argumentos posicionales a la plantilla de eventos. Los valores se insertan en la plantilla para construir el mensaje para el evento. Los eventos pueden tener varias versiones de plantilla que usan diferentes formatos.

Si los valores de la carga no coinciden con los tipos de la plantilla, el evento se registra, pero la carga contiene un error.

Tipo:Object[]
Posición:2
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ProviderName

Especifica el proveedor de eventos que escribe el evento en un registro de eventos, como "Microsoft-Windows-PowerShell". Un proveedor de eventos ETW es una entidad lógica que escribe los eventos en las sesiones ETW.

Tipo:String
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Version

Especifica el número de versión del evento. PowerShell convierte el número en el tipo de bytes necesario. El valor especifica la versión del evento cuando se definen versiones diferentes del mismo evento.

Tipo:Byte
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Entradas

None

No se pueden canalizar objetos a este cmdlet.

Salidas

None

Este cmdlet no devuelve ningún resultado.

Notas

Una vez que el proveedor escribe el evento en un registro de eventos, puede usar el Get-WinEvent cmdlet para obtener el evento del registro de eventos.