about_PowerShell_Config

簡単な説明

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

長い説明

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

警告

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

AllUsers (共有) 構成

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

注意

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

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

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

全般構成設定

ExecutionPolicy

重要

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

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

AllUsers 構成の場合、これによって LocalMachine 実行ポリシーが設定されます。 CurrentUser 構成の場合、 currentuser 実行ポリシーが設定されます。

注意

コマンドレットは Set-ExecutionPolicy 、を使用 -Scope LocalMachine して呼び出されたときに AllUsers 構成ファイル内のこの設定を変更し、で -Scope CurrentUser 呼び出されたときに CurrentUser 構成ファイルでこの設定を変更します。

"<shell-id>:ExecutionPolicy": "<execution-policy>"

各値の説明:

  • <shell-id> 現在の PowerShell ホストの ID を参照します。 通常の PowerShell の場合、これは Microsoft.PowerShell です。 任意の PowerShell セッションで、を使用 $ShellId して検出できます。
  • <execution-policy> 有効な実行ポリシー名を参照します。

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

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

Windows では、対応するレジストリキーがおよび HKEY_CURRENT_USER の下 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell あります。

PSModulePath

この PowerShell セッションの設定を PSModulePath 上書きします。 現在のユーザーの構成である場合は、 CurrentUser モジュールのパスを設定します。 構成がすべてのユーザーを対象としている場合は、 AllUsers モジュールパスを設定します。

警告

ここで AllUsers または CurrentUser モジュールパスを構成しても、 インストールモジュールのような PowerShellGet コマンドレットの範囲指定されたインストール場所は変更されません。 これらのコマンドレットは、常に 既定 のモジュールパスを使用します。

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

この設定により、のように、CMD で許可されているのと "%HOME%\Documents\PowerShell\Modules" 同じように、環境変数を文字間 % に埋め込むことによって使用できます。 この構文は、Linux と macOS でも適用されます。 次の例を参照してください。

"PSModulePath": "<ps-module-path>"

各値の説明:

  • <ps-module-path> は、モジュールディレクトリへの絶対パスです。 すべてのユーザー構成について、これは AllUsers 共有モジュールディレクトリです。 現在のユーザー構成では、CurrentUser モジュールディレクトリになります。

この例では、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 環境変数を埋め込む方法を示します。

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

注意

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

ExperimentalFeatures

PowerShell で有効にする試験的な機能の名前。 既定では、試験的な機能は有効になっていません。 既定値は空の配列です。

"ExperimentalFeatures": ["<experimental-feature-name>", ...]

各値の説明:

  • <experimental-feature-name> 有効にする試験的な機能の名前を指定します。

次の例では、PowerShell の起動時に PSImplicitRemotingPSUseAbbreviationExpansion の試験的な機能を有効にします。

{
  "ExperimentalFeatures": [
    "PSImplicitRemotingBatching",
    "PSUseAbbreviationExpansion"
  ]
}

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

非 Windows ログ構成

重要

このセクションの構成オプションは、macOS と Linux にのみ適用されます。 Windows のログ記録は、Windows イベントビューアーによって管理されます。

Powershell の macOS と Linux でのログ記録は、PowerShell 構成ファイルで構成できます。 非 Windows システムの PowerShell ログの詳細については、「ログ記録について」を参照してください。

LogIdentity

重要

この設定は、macOS と Linux でのみ使用できます。

システムログへの書き込みに使用する id 名を設定します。 既定値は "powershell" です。

"LogIdentity": "<log-identity>"

各値の説明:

  • <log-identity> は、PowerShell が syslog に書き込むために使用する文字列 id です。

注意

インストールした PowerShell のインスタンスごとに異なる Logidentity 値を使用することもできます。

この例では、PowerShell のプレビューリリースの Logidentity を構成しています。

{
  "LogIdentity": "powershell-preview"
}

LogLevel

重要

この設定は、macOS と Linux でのみ使用できます。

PowerShell がログに記録する必要がある最小重大度レベルを指定します。

"LogLevel": "<log-level>|default"

各値の説明:

  • <log-level>は次のいずれかです:
    • 常に表示する
    • Critical
    • エラー
    • 警告
    • Informational
    • "詳細"
    • デバッグ

注意

ログレベルを設定すると、その上にあるすべてのログレベルが有効になります。

この設定を default に設定すると、既定値として解釈されます。 既定値は 情報 です。

次の例では、値を Verbose に設定します。

{
  "LogLevel": "Verbose"
}

LogChannels

重要

この設定は、macOS と Linux でのみ使用できます。

有効にするログチャネルを指定します。

"LogChannels": "<log-channel>,..."

各値の説明:

  • <log-channel>は次のいずれかです:
    • 操作 - PowerShell アクティビティに関する基本情報をログに記録します
    • 分析 - より詳細な診断情報をログに記録します

既定値は Operational です。 両方のチャネルを有効にするには、両方の値を単一のコンマ区切り文字列として含める必要があります。 次に例を示します。

{
  "LogChannels": "Operational,Analytic"
}

LogKeywords

重要

この設定は、macOS と Linux でのみ使用できます。

PowerShell のログに記録される部分を決定します。 既定では、すべてのログ キーワードが有効になっています。 複数のキーワードを有効にするには、1 つのコンマ区切り文字列の値を一覧表示します。

"LogKeywords": "<log-keyword>,..."

各値の説明:

  • <log-keyword>は次のいずれかです:
    • Runspace - 実行空間管理
    • パイプライン - パイプライン操作
    • プロトコル - PSRP などの通信プロトコル処理
    • トランスポート - トランスポート層のサポート (SSH など)
    • ホスト - PowerShell ホスト機能 (コンソールの操作など)
    • コマンドレット - PowerShell 組み込みコマンドレット
    • シリアライザー - シリアル化ロジック
    • セッション - PowerShell セッションの状態
    • ManagedPlugin - WSMan プラグイン

注意

一般に、PowerShell の既知の部分で特定の動作を診断する場合を限り、この値を設定しないままにすることが推奨されます。 この値を変更すると、ログに記録される情報の量だけが減少します。

この例では、実行空間操作、パイプライン ロジック、およびコマンドレットの使用にログ記録を制限します。 その他のログ記録はすべて省略されます。

"LogKeywords": "Runspace,Pipeline,Cmdlets"

その他の構成例

構成Windows例

この構成には、より多くの設定が明示的に設定されています。

  • この PowerShell インストールの実行ポリシーは、 AllSigned
  • CurrentUser モジュールパスが共有ドライブ上のモジュール ディレクトリに設定されている
  • 試験 PSImplicitRemotingBatching 的機能が有効になっている

注意

ここでExecutionPolicyPSModulePath と の設定は Windows \ ; Unrestricted プラットフォームでのみ機能します。これは、モジュール パスで 区切り文字と 区切り文字が使用され、実行ポリシーが (UNIX に似たプラットフォームで許可されている唯一のポリシー) では使用されないのでです。

{
  "Microsoft.PowerShell.ExecutionPolicy": "AllSigned",
  "PSModulePath": "Z:\\Marisol's Shared Drive\\Modules",
  "ExperimentalFeatures": ["PSImplicitRemotingBatching"],
}

非構成のWindows例

この構成では、macOS または Linux でのみ機能する多くのオプションが設定されます。

  • CurrentUser モジュールのパスは、 のカスタム モジュール ディレクトリに設定されます。 $HOME
  • PSImplicitRemotingBatching 試験 機能が有効になっている
  • より多くのログ記録のために、PowerShell ログ レベルが Verbose に設定されている
  • この PowerShell インストールでは、home-powershell ID を使用してログ に書き込 みます。
{
  "PSModulePath": "%HOME%/.powershell/Modules",
  "ExperimentalFeatures": ["PSImplicitRemotingBatching"],
  "LogLevel": "Verbose",
  "LogIdentity": "home-powershell"
}

関連項目