about_Eventlogs

簡単な説明

この記事では、PowerShell で Windows イベント ログにイベントを記録する方法について説明します。

詳細な説明

Windows PowerShell は、Windows PowerShell イベントを記録するために "Windows PowerShell" という名前の Windows イベント ログを作成します。 このログは、イベント ビューアーで表示することも、コマンドレットなどのイベントを取得するコマンドレットをGet-EventLog使用して表示することもできます。 既定では、Windows PowerShell エンジンとプロバイダー イベントはイベント ログに記録されますが、イベント ログ基本設定変数を使用してイベント ログをカスタマイズできます。 たとえば、Windows PowerShell コマンドに関するイベントを追加できます。

Windows PowerShell イベント ログには、プログラム エンジンの起動と停止、Windows PowerShell プロバイダーの起動と停止など、Windows PowerShell 操作の詳細が記録されます。 Windows PowerShell コマンドに関する詳細をログに記録することもできます。

Windows PowerShell イベント ログの表示

Windows PowerShell イベント ログは、イベント ビューアーで表示することも、コマンドレットをGet-EventLogGet-WmiObject使用して表示することもできます。 Windows PowerShell ログの内容を表示するには、次のように入力します。

Get-EventLog -LogName "Windows PowerShell"

イベントとそのプロパティを調べるには、コマンドレット、コマンドレット、Group-Objectおよび動詞 (コマンドレット) を含むコマンドレットをFormatFormat使用Sort-Objectします。

たとえば、イベント ID でグループ化されたログ内のイベントを表示するには、次のように入力します。

Get-EventLog "Windows PowerShell" | Format-Table -GroupBy EventID

または、次のように入力します。

Get-EventLog "Windows PowerShell" |
  Sort-Object EventID |
  Group-Object EventID

すべてのクラシック イベント ログを表示するには、次のように入力します。

Get-EventLog -List

このコマンドレットを Get-WmiObject 使用して、イベント関連の Windows Management Instrumentation (WMI) クラスを使用してイベント ログを調べることもできます。 たとえば、イベント ログ ファイルのすべてのプロパティを表示するには、次のように入力します。

Get-WmiObject Win32_NTEventlogFile |
  where LogFileName -EQ "Windows PowerShell" |
  Format-List -Property *

Win32 イベント関連 WMI クラスを検索するには、次のように入力します。

Get-WmiObject -List | where Name -Like "win32*event*"

詳細については、「 Get-EventLog 」および 「Get-WmiObject」を参照してください

Windows PowerShell イベント ログのイベントの選択

イベント ログの基本設定変数を使用して、Windows PowerShell イベント ログに記録されるイベントを決定できます。

イベント ログの基本設定変数は 6 つあります。エンジン (Windows PowerShell プログラム)、プロバイダー、およびコマンドの 3 つのログ コンポーネントごとに 2 つの変数。 LifeCycleEvent 変数は、通常の開始イベントと停止イベントをログに記録します。 正常性変数はエラー イベントをログに記録します。

次の表に、イベント ログの基本設定変数を示します。

変数 説明
$LogEngineLifeCycleEvent PowerShell の開始と停止をログに記録する
$LogEngineHealthEvent PowerShell プログラムのエラーをログに記録する
$LogProviderLifeCycleEvent PowerShell プロバイダーの開始と停止をログに記録します
$LogProviderHealthEvent PowerShell プロバイダーのエラーをログに記録する
$LogCommandLifeCycleEvent コマンドの開始と完了をログに記録します
$LogCommandHealthEvent コマンド エラーをログに記録する

(Windows PowerShell プロバイダーの詳細については、about_Providersを参照してください)。

既定では、次のイベントの種類のみが有効になります。

  • $LogEngineLifeCycleEvent
  • $LogEngineHealthEvent
  • $LogProviderLifeCycleEvent
  • $LogProviderHealthEvent

イベントの種類を有効にするには、そのイベントの種類の基本設定変数を 〘 に $true設定します。 たとえば、コマンド のライフ サイクル イベントを有効にするには、次のように入力します。

$LogCommandLifeCycleEvent

または、次のように入力します。

$LogCommandLifeCycleEvent = $true

イベントの種類を無効にするには、そのイベントの種類の基本設定変数を $false. たとえば、コマンド のライフサイクル イベントを無効にするには、次のように入力します。

$LogProviderLifeCycleEvent = $false

Windows PowerShell エンジンとコア プロバイダーが起動したことを示すイベントを除き、任意のイベントを無効にすることができます。 これらのイベントは、Windows PowerShell プロファイルが実行される前と、ホスト プログラムがコマンドを受け入れる準備ができる前に生成されます。

変数の設定は、現在の Windows PowerShell セッションにのみ適用されます。 すべての Windows PowerShell セッションに適用するには、それらを Windows PowerShell プロファイルに追加します。

モジュール イベントのログ記録

Windows PowerShell 3.0 以降では、モジュールとスナップインの LogPipelineExecutionDetails プロパティを設定することで、Windows PowerShell モジュールおよびスナップインのコマンドレットと関数の実行イベントを$true記録できます。 Windows PowerShell 2.0 では、この機能はスナップインでのみ使用できます。

LogPipelineExecutionDetails プロパティ値が指定されている場合、Windows PowerShell は$trueセッション内のコマンドレットと関数実行イベントを、イベント ビューアーの Windows PowerShell ログに書き込みます。 この設定は、現在のセッションでのみ有効です。

モジュール内のコマンドレットと関数の実行イベントのログ記録を有効にするには、次のコマンド シーケンスを使用します。

Import-Module Microsoft.PowerShell.Archive
$m = Get-Module Microsoft.PowerShell.Archive
$m.LogPipelineExecutionDetails = $true

スナップイン内のコマンドレットの実行イベントのログ記録を有効にするには、次のコマンド シーケンスを使用します。

$m = Get-PSSnapin Microsoft.PowerShell.Core
$m.LogPipelineExecutionDetails = $True

ログ記録を無効にするには、同じコマンド シーケンスを使用してプロパティ値 $falseを .

また、[モジュール ログを有効にする] グループ ポリシー設定を使用して、モジュールとスナップインのログ記録を有効または無効にすることもできます。 ポリシー値には、モジュール名とスナップイン名の一覧が含まれます。 ワイルドカードを利用できます。

モジュールに対して [モジュール ログ記録を有効にする] が設定されている場合、モジュールの LogPipelineExecutionDetails プロパティの値はすべての$trueセッションにあり、変更することはできません。

[モジュール ログ記録を有効にする] グループ ポリシー設定は、次のグループ ポリシー パスにあります。

Computer Configuration\
  Administrative Templates\
    Windows Components\
     Windows PowerShell

User Configuration\
  Administrative Templates\
    Windows Components\
      Windows PowerShell

ユーザー構成ポリシーはコンピューター構成ポリシーよりも優先され、どちらのポリシーもモジュールとスナップインの LogPipelineExecutionDetails プロパティの値よりも優先されます。

このグループ ポリシー設定の詳細については、「about_Group_Policy_設定」を参照してください

セキュリティと監査

Windows PowerShell イベント ログは、アクティビティを示し、トラブルシューティングのための操作の詳細を提供するように設計されています。

ただし、ほとんどの Windows ベースのアプリケーション イベント ログと同様に、Windows PowerShell イベント ログはセキュリティで保護されるように設計されていません。 セキュリティを監査したり、機密情報や独自の情報を記録したりするために使用しないでください。

イベント ログは、ユーザーが読み取って理解できるように設計されています。 ユーザーはログの読み取りと書き込みを行うことができます。 悪意のあるユーザーは、ローカル コンピューターまたはリモート コンピューターでイベント ログを読み取り、偽のデータを記録し、アクティビティのログ記録を防ぐことができます。

メモ

モジュール作成者の作成者は、モジュールにログ機能を追加できます。 詳細については、「Windows PowerShell モジュールの作成」を参照してください

関連項目