Delen via


New-WinEvent

Hiermee maakt u een nieuwe Windows-gebeurtenis voor de opgegeven gebeurtenisprovider.

Syntaxis

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

Description

Deze cmdlet is alleen beschikbaar op het Windows-platform.

De cmdlet New-WinEvent maakt een ETW-gebeurtenis (Event Tracing for Windows) voor een gebeurtenisprovider. U kunt deze cmdlet gebruiken om gebeurtenissen toe te voegen aan ETW-kanalen vanuit PowerShell.

Voorbeelden

Voorbeeld 1: een nieuwe gebeurtenis maken

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

Met deze opdracht wordt de New-WinEvent-cmdlet gebruikt om gebeurtenis 45090 te maken voor de Microsoft-Windows-PowerShell-provider.

Voorbeeld 2: de sjabloon voor een gebeurtenis ophalen

In dit voorbeeld wordt Get-WinEvent gebruikt om de sjabloon op te halen voor gebeurtenis-id 8007 van de gebeurtenisprovider Groepsbeleid. U ziet dat de gebeurtenis twee indelingen heeft.

In versie 0 is het veld IsMachine een Booleaanse waarde. In versie 1 is het veld IsMachine een niet-ondertekend geheel getal.

(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.

De eigenschap Description bevat het bericht dat naar het gebeurtenislogboek wordt geschreven. De %3- en %1-waarde zijn tijdelijke aanduidingen voor de waarden die zijn doorgegeven aan de sjabloon. De %3 tekenreeks wordt vervangen door de waarde die wordt doorgegeven aan het veld PrincipalSamName. De %1 tekenreeks wordt vervangen door de waarde die wordt doorgegeven aan het veld PolicyElaspedTimeInSeconds.

Voorbeeld 3: een nieuwe gebeurtenis maken met behulp van een geversiede sjabloon

In dit voorbeeld ziet u hoe u een gebeurtenis maakt met behulp van een specifieke sjabloonversie.

$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

Als de waarden in de nettolading niet overeenkomen met de typen in de sjabloon, wordt de gebeurtenis geregistreerd, maar bevat de nettolading een fout.

Parameters

-Id

Hiermee geeft u een gebeurtenis-id op die is geregistreerd in de gebeurtenisprovider.

Type:Int32
Position:1
Default value:None
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Payload

De nettolading is een matrix met waarden die als positionele argumenten worden doorgegeven aan de gebeurtenissjabloon. De waarden worden in de sjabloon ingevoegd om het bericht voor de gebeurtenis samen te stellen. Gebeurtenissen kunnen meerdere sjabloonversies hebben die verschillende indelingen gebruiken.

Als de waarden in de nettolading niet overeenkomen met de typen in de sjabloon, wordt de gebeurtenis geregistreerd, maar bevat de nettolading een fout.

Type:Object[]
Position:2
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-ProviderName

Hiermee geeft u de gebeurtenisprovider op die de gebeurtenis naar een gebeurtenislogboek schrijft, zoals 'Microsoft-Windows-PowerShell'. Een ETW-gebeurtenisprovider is een logische entiteit die gebeurtenissen naar ETW-sessies schrijft.

Type:String
Position:0
Default value:None
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Version

Hiermee geeft u het versienummer van de gebeurtenis. PowerShell converteert het getal naar het vereiste bytetype. De waarde geeft de versie van de gebeurtenis op wanneer verschillende versies van dezelfde gebeurtenis worden gedefinieerd.

Type:Byte
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

Invoerwaarden

None

U kunt geen objecten doorsluisen naar deze cmdlet.

Uitvoerwaarden

None

Deze cmdlet retourneert geen uitvoer.

Notities

Nadat de provider de gebeurtenis naar een gebeurtenislogboek heeft geschreven, kunt u de cmdlet Get-WinEvent gebruiken om de gebeurtenis op te halen uit het gebeurtenislogboek.