Condividi tramite


New-WinEvent

Crea un nuovo evento di Windows per il provider di eventi specificato.

Sintassi

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

Descrizione

Questo cmdlet è disponibile solo nella piattaforma Windows.

Il New-WinEvent cmdlet crea un evento Event Tracing for Windows (ETW) per un provider di eventi. È possibile usare questo cmdlet per aggiungere eventi ai canali ETW da PowerShell.

Esempio

Esempio 1 - Creare un nuovo evento

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

Questo comando usa il New-WinEvent cmdlet per creare l'evento 45090 per il provider Microsoft-Windows-PowerShell.

Esempio 2: ottenere il modello per un evento

In questo esempio viene Get-WinEvent usato per ottenere il modello per l'ID evento 8007 dal provider di eventi Criteri di gruppo. Si noti che l'evento ha due formati.

Nella versione 0 il campo IsMachine è un valore booleano. Nella versione 1 il campo IsMachine è un valore intero senza segno.

(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 proprietà Description contiene il messaggio scritto nel registro eventi. Il %3 valore e %1 sono segnaposto per i valori passati nel modello. La %3 stringa viene sostituita con il valore passato al campo PrincipalSamName . La %1 stringa viene sostituita con il valore passato al campo PolicyElaspedTimeInSeconds .

Esempio 3: Creare un nuovo evento usando un modello con controllo delle versioni

In questo esempio viene illustrato come creare un evento usando una versione specifica del modello.

$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

Se i valori nel payload non corrispondono ai tipi nel modello, l'evento viene registrato ma il payload contiene un errore.

Parametri

-Id

Specifica un ID evento registrato nel provider di eventi.

Tipo:Int32
Posizione:1
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Payload

Il payload è una matrice di valori passati come argomenti posizionali al modello di evento. I valori vengono inseriti nel modello per costruire il messaggio per l'evento. Gli eventi possono avere più versioni del modello che usano formati diversi.

Se i valori nel payload non corrispondono ai tipi nel modello, l'evento viene registrato ma il payload contiene un errore.

Tipo:Object[]
Posizione:2
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-ProviderName

Specifica il provider di eventi che scrive l'evento in un registro eventi, ad esempio "Microsoft-Windows-PowerShell". Un provider di eventi ETW è un'entità logica che scrive eventi nelle sessioni ETW.

Tipo:String
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Version

Specifica il numero di versione dell'evento. PowerShell converte il numero nel tipo byte richiesto. Il valore specifica la versione dell'evento quando vengono definite versioni diverse dello stesso evento.

Tipo:Byte
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 restituisce output.

Note

Dopo che il provider scrive l'evento in un log eventi, è possibile usare il Get-WinEvent cmdlet per ottenere l'evento dal registro eventi.