New-WinEvent

指定したイベント プロバイダーの新しい Windows イベントを作成します。

構文

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

説明

このコマンドレットは、Windows プラットフォームでのみ使用できます。

New-WinEvent コマンドレットは、イベント プロバイダーの Windows イベント トレーシング (ETW) イベントを作成します。 このコマンドレットを使用して、PowerShell から ETW チャネルにイベントを追加できます。

例 1 - 新しいイベントを作成する

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

このコマンドでは、 New-WinEvent コマンドレットを使用して、Microsoft-Windows-PowerShell プロバイダーのイベント 45090 を作成します。

例 2 - イベントのテンプレートを取得する

この例では、 Get-WinEvent を使用して、グループ ポリシー イベント プロバイダーからイベント ID 8007 のテンプレートを取得します。 イベントには 2 つの形式があることに注意してください。

バージョン 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.

Description プロパティには、イベント ログに書き込まれるメッセージが含まれます。 %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 を指定します。

型:Int32
配置: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 は、数値を必要なバイト型に変換します。 この値は、同じイベントの異なるバージョンが定義されている場合のイベントのバージョンを指定します。

型:Byte
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

None

このコマンドレットにオブジェクトをパイプすることはできません。

出力

None

このコマンドレットは、出力を返しません。

メモ

プロバイダーがイベント ログにイベントを書き込んだ後、 Get-WinEvent コマンドレットを使用してイベント ログからイベントを取得できます。