about_Eventlogs

適用対象: Windows PowerShell 2.0, Windows PowerShell 3.0

トピック

about_EventLogs

概要

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

詳細説明

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

Windows PowerShell イベント ログは、[アプリケーションとサービス ログ] グループ内にあります。Windows PowerShell ログは、Windows イベント テクノロジを使用しない従来のイベント ログです。ログを表示するには、Get-EventLog などの従来のイベント ログ用に設計されたコマンドレットを使用します。

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-Help Get-EventLog」および「Get-Help Get-WmiObject」と入力してください。

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

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

イベント ログ設定変数は、2 種類の変数が、エンジン (Windows PowerShell プログラム)、プロバイダー、コマンドの 3 つのログ コンポーネントのそれぞれにあり、全部で 6 種類あります。LifeCycleEvent 変数は、通常の起動イベントと停止イベントを記録します。Health 変数はエラー イベントを記録します。

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

          Variable                     Description
          --------------------------   ----------------------------------------

  $LogEngineLifeCycleEvent     Logs starting and stopping of
                                       Windows PowerShell.

  $LogEngineHealthEvent        Logs Windows PowerShell program errors.

  $LogProviderLifeCycleEvent   Logs starting and stopping of 
                                       Windows PowerShell providers.

  $LogProviderHealthEvent      Logs Windows PowerShell provider errors.

  $LogCommandLifeCycleEvent    Logs starting and completion of commands.

  $LogCommandHealthEvent       Logs command errors.

(Windows PowerShell プロバイダーの詳細については、「Get-Help 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 より、Windows PowerShell のモジュールとスナップインにあるコマンドレットや関数の実行イベントを記録できます。その場合、モジュールまたはスナップインの LogPipelineExecutionDetails プロパティを TRUE に設定します。Windows PowerShell 2.0 では、この機能はスナップインに対してのみ使用できます。

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

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

        Import-Module <ModuleName>
        $m = Get-Module <ModuleName>
        $m.LogPipelineExecutionDetails = $True

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

        $m = Get-PSSnapin <SnapInName> [-Registered]
        $m.LogPipelineExecutionDetails = $True

ログを無効にするには、同じコマンド シーケンスを使用して、プロパティの値を FALSE ($False) に設定します。

また、"モジュール ログを有効にする" グループ ポリシー設定を使用して、モジュールとスナップインのログの有効化と無効化を行うこともできます。ポリシーの値には、モジュール名とスナップイン名の一覧が含まれています。ワイルド カードがサポートされます。

モジュールに対して "モジュール ログを有効にする" を設定すると、すべてのセッションでそのモジュールの LogPipelineExecutionDetails プロパティの値が TRUE になり、変更できなくなります。

"モジュール ログを有効にする" グループ ポリシー設定は、次のグループ ポリシー パスに格納されます。

        Computer Configuration\Administrative Templates\Windows Components\Windows PowerShell
        User Configuration\Administrative Templates\Windows Components\Windows PowerShell

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

グループ ポリシー設定の詳細については、「about_Group_Policy_Settings」(https://go.microsoft.com/fwlink/?LinkID=251696) を参照してください。

セキュリティおよび監査

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

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

イベント ログは、ユーザーが読んで理解できるように設計されています。ユーザーは、ログの読み取りと書き込みを実行できます。悪意のあるユーザーによって、ローカル コンピューターまたはリモート コンピューターでイベント ログが読み取られ、不正なデータが記録され、そのアクティビティの記録を妨害される危険性があります。

注意事項

モジュールの作成者は、作成したモジュールにログ機能を追加できます。詳細については、MSDN の Windows PowerShell モジュールの作成に関するページ (h https://go.microsoft.com/fwlink/?LinkID=144916) を参照してください。

関連項目

Get-EventLog

Get-WmiObject

about_Group_Policy_Settings

about_Preference_Variables