当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] New-WinEvent (Microsoft.PowerShell.Diagnostics)

作者:精品下载站 日期:2024-12-14 02:13:27 浏览:15 分类:玩电脑

New-WinEvent (Microsoft.PowerShell.Diagnostics)


New-WinEvent

模块 :Microsoft.PowerShell.Diagnostics

为指定的事件提供程序创建新的 Windows 事件。

句法

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

描述

此 cmdlet 仅适用于 Windows 平台。

New-WinEvent cmdlet 为事件提供程序创建 Windows 事件跟踪 (ETW) 事件。您可以使用此 cmdlet 从 PowerShell 将事件添加到 ETW 通道。

示例

示例 1 - 创建一个新事件

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

此命令使用 New-WinEvent cmdlet 为 Microsoft-Windows-PowerShell 提供程序创建事件 45090。

示例 2 - 获取事件模板

在此示例中,Get-WinEvent 用于从组策略事件提供程序获取事件 ID 8007 的模板。请注意,该事件有两种格式。

在版本 0 中,IsMachine 字段是一个布尔值。在版本 1 中,IsMachine 字段是一个无符号整数值。

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

描述属性包含写入事件日志的消息。 %3%1 值是传递到模板中的值的占位符。 %3 字符串将替换为传递给 PrincipalSamName 字段的值。 %1 字符串将替换为传递到 PolicyElaspedTimeInSeconds 字段的值。

示例 3 - 使用版本化模板创建新事件

此示例演示如何使用特定模板版本创建事件。

$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

如果负载中的值与模板中的类型不匹配,则会记录该事件,但负载中包含错误。

参数

-Id

指定在事件提供程序中注册的事件 ID。

类型 :

整数32

位置:

1

默认值:

None

必需的:

True

接受管道输入:

False

接受通配符:

False

-Payload

有效负载是作为位置参数传递给事件模板的值数组。这些值将插入到模板中以构造事件的消息。事件可以有多个使用不同格式的模板版本。

如果负载中的值与模板中的类型不匹配,则会记录该事件,但负载中包含错误。

类型 :

Object[]

位置:

2

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-ProviderName

指定将事件写入事件日志的事件提供程序,例如“Microsoft-Windows-PowerShell”。 ETW 事件提供程序是将事件写入 ETW 会话的逻辑实体。

类型 :

String

位置:

0

默认值:

None

必需的:

True

接受管道输入:

False

接受通配符:

False

-Version

指定事件的版本号。 PowerShell 将数字转换为所需的字节类型。当定义同一事件的不同版本时,该值指定事件的版本。

类型 :

字节

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

输入

您无法通过管道将对象传递到此 cmdlet。

输出

此 cmdlet 不返回任何输出。

笔记

提供程序将事件写入事件日志后,您可以使用 Get-WinEvent cmdlet 从事件日志中获取事件。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯