ja-JP/about_Logging_Windows.help.txt

TOPIC
    about_Logging_Windows

簡単な説明
    PowerShell は、エンジン、プロバイダー、コマンドレットの内部操作を
    Windows イベントログに記録します。

詳細な説明
    PowerShell は、エンジンやプロバイダーの開始と停止、PowerShell コマンド
    の実行など、PowerShell の操作に関する詳細を記録します。

    Windows PowerShell 5.1 でのログ記録については、about_Logging を参照して
    ください。

    PowerShell は、2 つのカテゴリのログ記録の構成をサポートしています。

    - モジュールログ記録 - 指定したモジュールのメンバーについて、パイプライ
      ンの実行イベントを記録します。モジュールログ記録は、セッションと特定
      のモジュールの両方で有効にする必要があります。このログ記録の構成につ
      いて詳しくは、about_PowerShell_Config を参照してください。

      構成によってモジュールログ記録が有効になっている場合は、モジュールの
      LogPipelineExecutionDetails プロパティの値を設定することで、セッション
      内の特定のモジュールについてログ記録を有効または無効にできます。

      たとえば、PSReadLine モジュールのモジュールログ記録を有効にするには次
      のようにします。

          $psrl = Get-Module PSReadLine
          $psrl.LogPipelineExecutionDetails = $true
          Get-Module PSReadLine |
              Select-Object Name, LogPipelineExecutionDetails

          Name LogPipelineExecutionDetails
          ---- ---------------------------
          PSReadLine True

    - スクリプトブロックログ記録 - 対話的に呼び出されたか、自動化を通じて呼
      び出されたかにかかわらず、コマンド、スクリプトブロック、関数、スクリプ
      トの処理を記録します。

      スクリプトブロックログ記録を有効にすると、PowerShell は処理するすべて
      のスクリプトブロックの内容を記録します。有効にすると、新しい PowerShell
      セッションがこの情報を記録します。詳しくは、後述の「スクリプトブロック
      ログ記録を有効にする」を参照してください。

  Windows で PowerShell イベントプロバイダーを登録する

    Linux や macOS とは異なり、Windows ではイベントをイベントログに書き込む
    前に、イベントプロバイダーを登録する必要があります。PowerShell イベント
    プロバイダーを有効にするには、管理者特権の PowerShell プロンプトから次の
    コマンドを実行します。

        $PSHOME\RegisterManifest.ps1

  Windows で PowerShell イベントログのエントリを表示する

    PowerShell ログは、Windows イベントビューアーを使って表示できます。イベ
    ントログは「アプリケーションとサービス ログ」グループにあり、
    PowerShellCore という名前です。関連付けられている ETW プロバイダーの
    GUID は {f90714a8-5509-434a-bf6d-b1624c8a19a2} です。

    スクリプトブロックログ記録が有効になっている場合、PowerShell は次のイベ
    ントを PowerShellCore/Operational ログに記録します。

        フィールド 値
        ---------- ----------------
        EventId 4104 / 0x1008
        Channel Operational
        Level Verbose
        Opcode Create
        Task CommandStart
        Keyword Runspace

  Windows で PowerShell イベントプロバイダーの登録を解除する

    イベントプロバイダーを登録すると、イベントのデコードに使われるバイナリ
    ライブラリにロックが設定されます。このライブラリを更新するには、ロックを
    解放するためにプロバイダーの登録を解除する必要があります。

    PowerShell プロバイダーの登録を解除するには、管理者特権の PowerShell プ
    ロンプトから次のコマンドを実行します。

        $PSHOME\RegisterManifest.ps1 -Unregister

    PowerShell を更新した後、$PSHOME\RegisterManifest.ps1 を実行して、更新さ
    れたイベントプロバイダーを登録します。

  スクリプトブロックログ記録を有効にする

    スクリプトブロックログ記録を有効にすると、PowerShell は処理するすべての
    スクリプトブロックの内容を記録します。有効にすると、新しい PowerShell セ
    ッションがこの情報を記録します。

    メモ: 診断目的以外でスクリプトブロックログ記録を使う場合は、後述の保護さ
    れたイベントログ記録を有効にすることをお勧めします。

    スクリプトブロックログ記録は、グループポリシーまたはレジストリの設定によ
    って有効にできます。

  グループポリシーを使う

    自動文字起こしを有効にするには、グループポリシーの [管理用テンプレート]
    -> [PowerShell Core] で [Turn on PowerShell Script Block Logging] 機能を
    有効にします。

  レジストリを使う

    次の関数を実行します。

        function Enable-PSScriptBlockLogging {
            $basePath = @(
                'HKLM:\Software\Policies\Microsoft'
                'PowerShellCore\ScriptBlockLogging'
            ) -join '\'

            if (-not (Test-Path $basePath)) {
                $null = New-Item $basePath -Force
            }

            Set-ItemProperty $basePath `
                -Name EnableScriptBlockLogging -Value "1"
        }

  PowerShell 構成ファイルを使う

    PowerShell の動作を制御する powershell.config.json ファイルで
    ScriptBlockLogging オプションを設定できます。詳しくは、
    about_PowerShell_Config を参照してください。

  保護されたイベントログ記録

    システムでのログ記録のレベルを上げると、記録された内容に機密データが含ま
    れる可能性が高くなります。たとえば、スクリプトログ記録を有効にすると、ス
    クリプトが使う資格情報やその他の機密データがイベントログに書き込まれるこ
    とがあります。機密データを記録したマシンが侵害された場合、ログによって攻
    撃者は影響範囲を拡大するために必要な情報を得られます。

    この情報を保護するために、Windows 10 では保護されたイベントログ記録が導
    入されました。保護されたイベントログ記録では、対応するアプリケーションが
    イベントログに書き込む機密データを暗号化できます。後で、よりセキュリティ
    が高く一元化されたログコレクターで、これらのログを復号して処理できます。

    イベントログの内容は、IETF の Cryptographic Message Syntax (CMS) 標準を
    使って保護されます。CMS は公開キー暗号方式を使います。内容を暗号化するキ
    ーと復号するキーは別々に保持されます。

    公開キーは広く共有でき、機密データではありません。この公開キーで暗号化さ
    れた内容は、秘密キーでのみ復号できます。

    保護されたイベントログ記録ポリシーを有効にするには、保護対象のイベントロ
    グデータを持つすべてのマシンに公開キーを配置します。対応する秘密キーは、
    一元化されたイベントログコレクターや SIEM アグリゲーターなど、よりセキュ
    リティが高い場所でイベントログを後処理するために使います。

  グループポリシーで保護されたイベントログ記録を有効にする

    保護されたイベントログ記録を有効にするには、グループポリシーの [管理用テ
    ンプレート] -> [Windows コンポーネント] -> [イベント ログ記録] で [Enable
    Protected Event Logging] 機能を有効にします。この設定には暗号化証明書が必
    要です。証明書は次のいずれかの形式で指定できます。

    - base-64 でエンコードされた X.509 証明書の内容 (たとえば、証明書マネージ
      ャーの [エクスポート] オプションで提供されるもの)。
    - ローカルマシンの証明書ストアにある証明書のサムプリント (PKI インフラス
      トラクチャーで展開可能)。
    - 証明書へのフルパス (ローカルまたはリモート共有上)。
    - 証明書を含むディレクトリへのパス (ローカルまたはリモート共有上)。
    - ローカルマシンの証明書ストアにある証明書のサブジェクト名 (PKI インフラ
      ストラクチャーで展開可能)。

    結果として得られる証明書は、拡張キー使用法として [ドキュメントの暗号化]
    (1.3.6.1.4.1.311.80.1) を持ち、かつ [データの暗号化] または [キーの暗号
    化] のいずれかのキー使用法が有効になっている必要があります。

    警告: 秘密キーは、イベントを記録するマシンに配置しないでください。メッセ
    ージを復号する安全な場所に保管する必要があります。

  保護されたイベントログ記録のメッセージを復号する

    次のスクリプトは、秘密キーがあることを前提として、イベントを取得して復号
    します。

        Get-WinEvent Microsoft-Windows-PowerShell/Operational |
            Where-Object Id -EQ 4104 | Unprotect-CmsMessage

関連項目
    about_Logging_Non-Windows
    about_PowerShell_Config
    Unprotect-CmsMessage
    Get-WinEvent

----
原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP