about_PowerShell_Config

簡単な説明

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

長い説明

powershell.config.json ファイルには、PowerShell の構成設定が含まれています。 PowerShell は起動時にこの構成を読み込みます。 設定は実行時に変更することもできます。 すべてのキーがすべてのプラットフォームに適用されるわけではありません。

警告

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

設定の概要

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

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

構成スコープ

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

スコープの優先順位

いくつかの特殊なケースを除き、 CurrentUser レベルで定義された設定は 、AllUsers レベルに定義されている設定よりも優先されます。

Windows システムの場合:

  • Windowsグループ ポリシーによって管理される設定は、構成ファイルの設定よりも優先されます。
  • 実行ポリシーでは、スコープ レベルの設定がサポートされます。

すべてのプラットフォームで:

  • $env:PSModulePathの結果の値は、両方のスコープのPSModulePath キーの値のマージです。

AllUsers (共有) の構成

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

Note

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

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

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

Split-Path $PROFILE.CurrentUserCurrentHost

Windows 固有の設定

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

  • DisableImplicitWinCompat
  • WindowsPowerShellCompatibilityModuleDenyList
  • WindowsPowerShellCompatibilityNoClobberModuleList
  • Microsoft.PowerShell:ExecutionPolicy
  • PowerShellPolicies
    • ScriptExecution

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」を参照してください。

Microsoft。PowerShell:ExecutionPolicy

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

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

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

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

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

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

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

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

  • LogChannels
  • LogIdentity
  • LogKeywords
  • LogLevel

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

一般的な構成設定

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

  • ExperimentalFeatures
  • PSModulePath
  • PowerShellPolicies

ExperimentalFeatures

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

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

例:

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

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

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\\7\\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 では、 /\ の両方が機能します。

PowerShellPolicies

PowerShellPoliciesは、さまざまな設定のキーと値のペアを含む JSON オブジェクトです。 ScriptExecution設定を除き、すべての設定を Windows、Linux、および macOS プラットフォームで使用できます。

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

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

Windowsでは、これらの設定はグループ ポリシー Windows管理できます。 グループ ポリシー設定が優先されます。 値がグループ ポリシーによって設定されていない場合、PowerShell は スコープの優先順位 で JSON ファイル内の値を適用します。

グループ ポリシーは、Windows システムでこれらの設定を管理するための推奨される方法です。 詳細については、「about_Group_Policy_Settings」をご覧ください。

ConsoleSessionConfiguration

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

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

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

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

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

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

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"
    ]
  }
}

ScriptBlockLogging

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

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

例:

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

ScriptExecution

ScriptExecution設定は、PowerShell 実行ポリシーを設定するために使用されます。 これは、前に説明した Microsoft.PowrShell:ExecutionPolicy 設定よりも優先されます。

例:

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

Note

これはWindows専用の設定です。

文字起こし

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

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

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

例:

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

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

UpdatableHelp

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

例:

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