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-EventLog
コマンドレットとGet-WmiObject
コマンドレットを使用して表示することもできます。 Windows PowerShell ログの内容を表示するには、次のように入力します。
Get-EventLog -LogName "Windows PowerShell"
イベントとそのプロパティを調べるには、 Sort-Object
コマンドレット、 Group-Object
コマンドレット、および Format
動詞 ( Format
コマンドレット) を含むコマンドレットを使用します。
たとえば、イベント 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 プロパティを $true
に設定することで、Windows PowerShell モジュールおよびスナップインのコマンドレットと関数の実行イベントを記録できます。 Windows PowerShell 2.0 では、この機能はスナップインでのみ使用できます。
LogPipelineExecutionDetailsプロパティ値が$true
されると、Windows PowerShell はセッション内のコマンドレットおよび関数実行イベントをイベント ビューアーの 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_Settings」を参照してください。
セキュリティと監査
Windows PowerShell イベント ログは、アクティビティを示し、トラブルシューティングのための操作の詳細を提供するように設計されています。
ただし、ほとんどの Windows ベースのアプリケーション イベント ログと同様に、Windows PowerShell イベント ログはセキュリティで保護されるように設計されていません。 セキュリティを監査したり、機密情報や独自の情報を記録したりするために使用しないでください。
イベント ログは、ユーザーが読み取って理解できるように設計されています。 ユーザーはログの読み取りと書き込みを行うことができます。 悪意のあるユーザーは、ローカル コンピューターまたはリモート コンピューターでイベント ログを読み取り、偽のデータを記録し、アクティビティのログ記録を防ぐことができます。
メモ
モジュール作成者の作成者は、モジュールにログ機能を追加できます。 詳細については、「 Windows PowerShell モジュールの作成」を参照してください。
関連項目
PowerShell