次の方法で共有


New-Event

新しいイベントを作成します。

構文

New-Event
   [-SourceIdentifier] <String>
   [[-Sender] <PSObject>]
   [[-EventArguments] <PSObject[]>]
   [[-MessageData] <PSObject>]
   [<CommonParameters>]

説明

New-Event コマンドレットは、新しいカスタム イベントを作成します。

カスタム イベントを使用して、プログラム内の状態の変更やプログラムが検出した変更 (ハードウェアまたはシステムの状態、アプリケーションの状態、ディスクの状態、ネットワークの状態、バック グラウンド ジョブの完了など) についてユーザーに通知することができます。

カスタム イベントは、セッションで発生するたびにイベント キューに自動的に追加されます。それらをサブスクライブする必要はありません。 ただし、イベントをローカル セッションに転送する場合、またはイベントに応答するアクションを指定する場合は、 Register-EngineEvent コマンドレットを使用してカスタム イベントをサブスクライブします。

カスタム イベントをサブスクライブすると、イベント サブスクライバーがセッションに追加されます。 Unregister-Event コマンドレットを使用してイベント サブスクリプションを取り消すと、イベント サブスクライバーとカスタム イベントがセッションから削除されます。 カスタム イベントをサブスクライブしない場合は、イベントを削除するには、プログラムの条件を変更するか、PowerShell セッションを閉じる必要があります。

例 1: イベント キューに新しいイベントを作成する

PS C:\> New-Event -SourceIdentifier Timer -Sender windows.timer -MessageData "Test"

このコマンドは、PowerShell イベント キューに新しいイベントを作成します。 Windows.Timer オブジェクトを使用してイベントを送信します。

例 2: 別のイベントに応答してイベントを発生させる

PS C:\> function Enable-ProcessCreationEvent
{
   $Query = New-Object System.Management.WqlEventQuery "__InstanceCreationEvent", (New-Object TimeSpan 0,0,1), "TargetInstance isa 'Win32_Process'"
   $ProcessWatcher = New-Object System.Management.ManagementEventWatcher $Query
   $Identifier = "WMI.ProcessCreated"
   Register-ObjectEvent $ProcessWatcher "EventArrived" -SupportEvent $Identifier -Action
   {
      [void] (New-Event -SourceID "PowerShell.ProcessCreated" -Sender $Args[0] -EventArguments $Args[1].SourceEventArgs.NewEvent.TargetInstance)
   }
}

このサンプル関数では、 New-Event コマンドレットを使用して、別のイベントに応答してイベントを発生させます。 このコマンドでは、 Register-ObjectEvent コマンドレットを使用して、新しいプロセスの作成時に発生する Windows Management Instrumentation (WMI) イベントをサブスクライブします。 このコマンドでは、コマンドレットの Action パラメーターを使用して、新しいイベントを作成する New-Event コマンドレットを呼び出します。

発生 New-Event イベントは PowerShell イベント キューに自動的に追加されるため、そのイベントに登録する必要はありません。

パラメーター

-EventArguments

イベントのオプションを格納しているオブジェクトを指定します。

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

-MessageData

イベントに関連付けられている追加のデータを指定します。 このパラメーターの値は、イベント オブジェクトの MessageData プロパティに表示されます。

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

-Sender

イベントを発生させるオブジェクトを指定します。 既定値は PowerShell エンジンです。

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

-SourceIdentifier

新しいイベントの名前を指定します。 このパラメーターは必須であり、セッション内で一意である必要があります。

このパラメーターの値は、イベントの SourceIdentifier プロパティに表示されます。

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

入力

None

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

出力

PSEventArgs

メモ

Linux または macOS プラットフォームで使用できるイベント ソースはありません。

新しいカスタム イベント、イベント サブスクリプション、およびイベント キューは、現在のセッションにのみ存在します。 現在のセッションを閉じた場合、イベント キューが破棄され、イベント サブスクリプションが取り消されます。