次の方法で共有


about_PowerShell_Config

簡単な説明

レジストリ構成を置き換える PowerShell の構成ファイル。

詳細な説明

powershell.config.json ファイルには、PowerShell の構成設定が含まれています。 PowerShell は起動時にこの構成を読み込みます。 設定は実行時に変更することもできます。 以前は、これらの設定は PowerShell 用 Windows レジストリに格納されていましたが、macOS と Linux で構成を有効にするファイルに含まれるようになりました。

設定の概要

powershell.config.json ファイルには、次のキーを含めることができます。

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • ExperimentalFeatures
  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel
  • Microsoft.PowerShell:ExecutionPolicy
  • PSModulePath
  • PowerShellPolicies
    • ExecutionPolicy
    • ConsoleSessionConfiguration
    • ModuleLogging
    • ProtectedEventLogging
    • ScriptBlockLogging
    • ScriptExecution
    • Transcription
    • UpdatableHelp

すべてのキーがすべてのプラットフォームに適用されるわけではありません。 PowerShellPolicies キーには、ウィンドウ グループ ポリシーによって管理される設定を反映するサブキーが含まれています。 これらのサブキーは、JSON ファイルのルート レベルで定義されている場合、すべてのプラットフォームにも適用されます。

警告

構成ファイル内の認識されないキーまたは無効な値は無視されます。 powershell.config.json ファイルに無効な JSON が含まれている場合、PowerShell は対話型セッションを開始できません。 この場合は、構成ファイルを修正する必要があります。

構成スコープ

構成設定は、すべてのユーザーまたは個々のユーザー レベルで定義できます。

AllUsers (共有) の構成

$PSHOME ディレクトリ内のpowershell.config.json ファイルは、その PowerShell インストールから実行されているすべての PowerShell セッションの構成を定義します。

Note

$PSHOMEの場所は、実行中のSystem.Management.Automation.dll アセンブリと同じディレクトリとして定義されます。 これは、ホストされている PowerShell SDK インスタンスにも適用されます。

CurrentUser (ユーザー単位) の構成

ユーザー スコープ構成ディレクトリにファイルを配置することで、ユーザーごとに PowerShell を構成することもできます。 ユーザー構成ディレクトリは、コマンド Split-Path $PROFILE.CurrentUserCurrentHostを使用してプラットフォーム間で見つけることができます。

スコープの優先順位

Windows では、Windows グループ ポリシーによって管理される設定が、構成ファイルの設定よりも優先されます。 グループ ポリシーは、Windows 以外のプラットフォームには存在しません。

グループ ポリシーの後、 AllUsers レベルで定義された設定は、 CurrentUser レベルに定義されている設定よりも優先されます。

Windows 固有の設定

次の設定は、Windows プラットフォームにのみ適用されます。

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • ExecutionPolicy
  • PowerShellPolicies

DisableImplicitWinCompat

trueに設定すると、この設定によって Windows PowerShell 互換性機能が無効になります。 Windows PowerShell 互換性により、PowerShell 7 は互換性モードで Windows PowerShell 5.1 モジュールを読み込むことができます。

詳細については、「 about_Windows_PowerShell_Compatibility」を参照してください。

WindowsPowerShellCompatibilityModuleDenyList

この設定は、Windows PowerShell 互換性機能への参加から除外するモジュール名の配列です。

詳細については、「 about_Windows_PowerShell_Compatibility」を参照してください。

WindowsPowerShellCompatibilityNoClobberModuleList

この設定はモジュール名の配列であり、Windows PowerShell 5.1 バージョンのモジュールを読み込んでは使用できません。

詳細については、「 about_Windows_PowerShell_Compatibility」を参照してください。

ExecutionPolicy

重要

この構成は、Windows プラットフォームでのみ適用されます。

PowerShell セッションの実行ポリシーを構成し、実行できるスクリプトを決定します。 既定では、PowerShell は既存の実行ポリシーを使用します。

AllUsers 構成の場合は、LocalMachine 実行ポリシーが設定されます。 CurrentUser 構成の場合は、CurrentUser 実行ポリシーが設定されます。

次の例では、PowerShell の実行ポリシーを RemoteSignedに設定します。

{
  "Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned"
}

詳細については、「about_Execution_Policies」を参照してください。

PowerShellPolicies

Windows には、グループ ポリシーで管理できるいくつかの設定があります。 通常、これらの設定は Windows レジストリに格納されます。 これらの設定は、 powershell.config.json ファイルでも定義できます。

PowerShellPoliciesは、さまざまなポリシー設定のキーと値のペアを含む JSON オブジェクトです。 これらのポリシー設定は、json ファイルのルート レベルで、 PowerShellPolicies オブジェクトの外部に一覧表示することもできます。 この設定には、次のサブキーを含めることができます。

  • ConsoleSessionConfiguration
  • ModuleLogging
  • ProtectedEventLogging
  • ScriptBlockLogging
  • ScriptExecution
  • Transcription
  • UpdatableHelp

ScriptExecution設定は、PowerShell 実行ポリシーを設定するために使用されます。 これは、前述の ExecutionPolicy 設定よりも優先されます。

例:

{
    "PowerShellPolicies": {
        "ScriptExecution": {
            "ExecutionPolicy": "RemoteSigned"
        }
    }
}

その他のポリシー設定の説明については、「 Common 構成設定 」セクションの説明を参照してください。

Windows では、PowerShell はレジストリ内の設定を検索します。 レジストリで見つかったすべての設定が優先されます。 次に、PowerShell は JSON 構成を読み取ります。 PowerShellPoliciesで見つかり、レジストリで定義されていない設定は、JSON 構成のルート レベルで見つかった設定よりも優先されます。

詳細については、「about_Group_Policy_Settings」をご覧ください。

Windows 以外のプラットフォームの設定

次の設定は、Linux および macOS プラットフォームにのみ適用されます。

Linux および macOS 用に PowerShell のログ記録を構成するには、次のキーを使用します。

  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel

Windows 以外のシステムの PowerShell ログの詳細については、「 about_Logging_Non-Windows」を参照してください。

一般的な構成設定

次の設定は、サポートされているすべてのプラットフォームで使用できます。

  • ConsoleSessionConfiguration
  • ExperimentalFeatures
  • ModuleLogging
  • ProtectedEventLogging
  • PSModulePath
  • ScriptBlockLogging
  • ScriptExecution
  • Transcription
  • UpdatableHelp

ConsoleSessionConfiguration

この設定では、すべての PowerShell セッションに使用するセッション構成を指定します。 既定の PowerShell リモート処理エンドポイントや、特定のユーザー ロール機能を持つカスタム エンドポイントなど、ローカル コンピューターに登録されている任意のエンドポイントを指定できます。

このキーには、次の 2 つのサブキーが含まれています。

  • EnableConsoleSessionConfiguration - セッション構成を有効にするには、値を true に設定します。 この値の既定値は false です。

  • ConsoleSessionConfigurationName - PowerShell を実行する構成エンドポイントの名前を指定します。 既定では、セッションは定義されていません。

{
  "ConsoleSessionConfiguration": {
    "EnableConsoleSessionConfiguration": false,
    "ConsoleSessionConfigurationName" : []
  }
}

詳細については、「 about_Session_Configurations」を参照してください。

ExperimentalFeatures

PowerShell で有効にする実験用機能の名前。 既定値は空の配列です。

次の例では、PowerShell の起動時に、 PSCommandNotFoundSuggestion および PSSubsystemPluginModel 試験的機能を有効にします。

例:

{
  "ExperimentalFeatures": [
    "PSCommandNotFoundSuggestion",
    "PSSubsystemPluginModel"
  ]
}

試験的特徴の詳細については、「 試験的特徴の使用」を参照してください。

ModuleLogging

この設定は、PowerShell モジュールのログ記録の動作を制御します。 この設定には、次の 2 つのサブキーが含まれています。

  • EnableModuleLogging - モジュールのログ記録を有効にするには、値を true に設定します。 有効にすると、指定したモジュールのメンバーのパイプライン実行イベントが PowerShell ログ ファイルに記録されます。
  • ModuleNames - ログに記録するモジュールの名前を指定します。

例:

{
  "ModuleLogging": {
    "EnableModuleLogging": true,
    "ModuleNames" : [
        "PSReadLine",
        "PowerShellGet"
    ]
  }
}

ProtectedEventLogging

この設定では、保護されたイベント ログを構成できます。 この設定には、次の 2 つのサブキーが含まれています。

  • EnableProtectedEventLogging - このポリシー設定を有効にした場合、それをサポートするコンポーネントは、指定した証明書を使用してログ データを暗号化してからログに書き込みます。 データは、暗号化メッセージ構文 (CMS) 標準を使用して暗号化されます。 証明書の秘密キーにアクセスできる場合は、 Unprotect-CmsMessage を使用して、これらの暗号化されたメッセージの暗号化を解除できます。
  • EncryptionCertificate - 暗号化に使用する証明書の名前の一覧を提供します。

例:

{
  "ProtectedEventLogging": {
    "EnableProtectedEventLogging": false,
    "EncryptionCertificate": [
      "Joe"
    ]
  }
}

PSModulePath

この PowerShell セッションの PSModulePath 設定をオーバーライドします。 現在のユーザーの構成の場合は、 CurrentUser モジュール パスを設定します。 構成がすべてのユーザーに対する場合は、 AllUsers モジュール パスを設定します。

警告

ここで AllUsers または CurrentUser モジュール パスを構成しても、 Install-Module などの PowerShellGet コマンドレットのスコープ付きインストール場所は変更されません。 これらのコマンドレットでは、常に default モジュール パスが使用されます。

値が設定されていない場合、PowerShell では、それぞれのモジュール パス設定に既定値が使用されます。 これらの既定値の詳細については、「 about_PSModulePath」を参照してください。

この設定では、環境変数を Windows コマンド シェルで許可されているのと同じ方法で、"%HOME%\Documents\PowerShell\Modules"などの%文字の間に埋め込むことで使用できます。 この構文は、Linux および macOS にも適用されます。 次の例を参照してください。

この例では、Windows 環境の PSModulePath 構成を示します。

{
  "PSModulePath": "C:\\Program Files\\PowerShell\\6\\Modules"
}

この例では、macOS または Linux 環境の PSModulePath 構成を示します。

{
  "PSModulePath": "/opt/powershell/6/Modules"
}

この例では、環境変数を PSModulePath 構成に埋め込む方法を示します。 HOME環境変数と / ディレクトリ区切り記号を使用すると、この構文は Windows、macOS、Linux で動作します。

{
  "PSModulePath": "%HOME%/Documents/PowerShell/Modules"
}

この例では、macOS と Linux でのみ動作する環境変数を使用します。

{
  "PSModulePath": "%XDG_CONFIG_HOME%/powershell/Modules"
}

Note

PowerShell 変数は、 PSModulePath 構成に埋め込むできません。 PSModulePath Linux および macOS の構成では、大文字と小文字が区別されます。 PSModulePath構成では、プラットフォームの有効なディレクトリ区切り記号を使用する必要があります。 macOS と Linux では、これは /を意味します。 Windows では、 /\ の両方が機能します。

ScriptBlockLogging

この設定では、すべての PowerShell スクリプト入力のログ記録を制御します。 この設定には、次の 2 つのサブキーが含まれています。

  • EnableScriptBlockLogging - このポリシー設定を有効にした場合、PowerShell は、対話形式で呼び出された場合でも、自動化を介して呼び出された場合でも、コマンド、スクリプト ブロック、関数、スクリプトの処理をログに記録します。
  • EnableScriptBlockInvocationLogging - スクリプト ブロックの開始イベントと停止イベントのログ記録を有効にします。

例:

"ScriptBlockLogging": {
  "EnableScriptBlockInvocationLogging": true,
  "EnableScriptBlockLogging": false
}

文字起こし

このポリシー設定では、テキスト ベースのトランスクリプトで PowerShell コマンドの入力と出力をキャプチャできます。 このポリシー設定を有効にした場合、PowerShell はすべての PowerShell セッションで文字起こしを有効にします。

この設定は、PowerShell での文字起こしのしくみを制御します。 この設定には、次の 3 つのサブキーが含まれています。

  • EnableTranscripting - この設定を有効にすると、PowerShell によって、構成された場所に文字起こしログ ファイルが作成されます。
  • EnableInvocationHeader - 既定では、PowerShell には文字起こしログ ファイルの先頭にヘッダーが含まれています。 この設定を使用して、ヘッダーを無効にすることができます。
  • OutputDirectory - この設定を使用すると、既定の場所ではなく中央の場所に文字起こしログ ファイルを収集できます。

例:

{
    "Transcription": {
        "EnableTranscripting": true,
        "EnableInvocationHeader": true,
        "OutputDirectory": "c:\\tmp"
      }
}

詳細については、「 Start-Transcript」を参照してください。

UpdatableHelp

このポリシー設定では、Update-Help コマンドレットの SourcePath パラメーターの既定値を設定できます。 この既定値は、 SourcePath パラメーターを使用して別の値を指定することでオーバーライドできます。

例:

{
    "UpdatableHelp": {
      "DefaultSourcePath": "f:\\temp"
    }
}