about_Preference_Variables

簡単な説明

PowerShell の動作をカスタマイズする変数。

長い説明

PowerShell には、その動作をカスタマイズできる一連の変数が含まれています。 これらの基本設定変数は、GUI ベースのシステムのオプションと同様に機能します。

ユーザー設定変数は PowerShell オペレーティング環境に影響し、すべてのコマンドは環境内で実行されます。 多くの場合、コマンドレットには、特定のコマンドの基本設定の動作をオーバーライドするために使用できるパラメーターがあります。

次の表に、基本設定変数とその既定値を示します。

変数 Default value
$ConfirmPreference High
$DebugPreference SilentlyContinue
$ErrorActionPreference Continue
$ErrorView ConciseView
$FormatEnumerationLimit 4
$InformationPreference SilentlyContinue
$LogCommandHealthEvent $False (ログに記録されません)
$LogCommandLifecycleEvent $False (ログに記録されません)
$LogEngineHealthEvent $True (ログに記録)
$LogEngineLifecycleEvent $True (ログに記録)
$LogProviderLifecycleEvent $True (ログに記録)
$LogProviderHealthEvent $True (ログに記録)
$MaximumHistoryCount 4096
$OFS スペース文字 (" ")
$OutputEncoding UTF8Encoding オブジェクト
$ProgressPreference Continue
$PSDefaultParameterValues @{} (空のハッシュ テーブル)
$PSEmailServer $Null (なし)
$PSModuleAutoLoadingPreference All
$PSSessionApplicationName 'wsman'
$PSSessionConfigurationName 'http://schemas.microsoft.com/powershell/Microsoft.PowerShell'
$PSSessionOption PSSessionOption オブジェクト
$Transcript $Null (なし)
$VerbosePreference SilentlyContinue
$WarningPreference Continue
$WhatIfPreference $False

PowerShell には、ユーザー設定を格納する次の環境変数が含まれています。 これらの環境変数の詳細については、「 about_Environment_Variables」を参照してください。

  • env:PSExecutionPolicyPreference
  • $env:PSModulePath

Note

ユーザー設定変数の変更は、それらのスクリプトまたは関数が、ユーザー設定が使用されたスコープと同じスコープで定義されている場合にのみ、スクリプトと関数で有効になります。 詳細については、「 about_Scopes」を参照してください。

ユーザー設定変数の操作

このドキュメントでは、各基本設定変数について説明します。

特定のユーザー設定変数の現在の値を表示するには、変数の名前を入力します。 たとえば、次のコマンドは変数の値を $ConfirmPreference 表示します。

 $ConfirmPreference
High

変数の値を変更するには、代入ステートメントを使用します。 たとえば、次のステートメントは、パラメーターの値を $ConfirmPreferenceMedium に変更します。

$ConfirmPreference = "Medium"

設定した値は、現在の PowerShell セッションに固有です。 すべての PowerShell セッションで変数を有効にするには、それらを PowerShell プロファイルに追加します。 詳細については、「about_Profiles」を参照してください。

リモートでの作業

リモート コンピューターでコマンドを実行する場合、リモート コマンドは、リモート コンピューターの PowerShell クライアントで設定された設定にのみ従います。 たとえば、リモート コマンドを実行すると、リモート コンピューター $DebugPreference の変数の値によって、PowerShell がメッセージのデバッグにどのように応答するかが決まります。

リモート コマンドの詳細については、「 about_Remote」を参照してください。

$ConfirmPreference

コマンドレットまたは関数を実行する前に、PowerShell から確認を求めるメッセージが自動的に表示されるかどうかを指定します。

変数は$ConfirmPreference、列挙値 (ConfirmImpactHighMediumLowNone) のいずれかを受け取ります。

コマンドレットと関数には、 、または のリスクが割り当てられます。 変数の $ConfirmPreference 値がコマンドレットまたは関数に割り当てられたリスク以下の場合、PowerShell はコマンドレットまたは関数を実行する前に確認を求めるメッセージを自動的に表示します。

変数の値が None$ConfirmPreference場合、コマンドレットまたは関数を実行する前に PowerShell から自動的にメッセージが表示されることはありません。

セッション内のすべてのコマンドレットと関数の確認動作を変更するには、変数の値を変更 $ConfirmPreference します。

1 つのコマンドの を $ConfirmPreference オーバーライドするには、コマンドレットまたは関数の Confirm パラメーターを使用します。 確認を要求するには、 を使用します -Confirm。 確認を抑制するには、 を使用します -Confirm:$false

の有効な値 $ConfirmPreference:

  • なし: PowerShell は自動的にプロンプトを表示しません。 特定のコマンドの確認を要求するには、コマンドレットまたは関数の Confirm パラメーターを使用します。
  • : 低、中、または高リスクのコマンドレットまたは関数を実行する前に、PowerShell で確認を求めるメッセージが表示されます。
  • Medium: PowerShell は、中程度または高リスクのコマンドレットまたは関数を実行する前に確認を求めます。
  • 高: 危険度の高いコマンドレットまたは関数を実行する前に、PowerShell で確認を求めるメッセージが表示されます。

詳細な説明

PowerShell では、アクションを実行する前に確認を求めるメッセージが自動的に表示されます。 たとえば、コマンドレットまたは関数がデータを削除したり、大量のシステム リソースを使用したりするためにシステムに大きな影響を与える場合です。

Remove-Item -Path C:\file.txt
Confirm
Are you sure you want to perform this action?
Performing operation "Remove File" on Target "C:\file.txt".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "Y"):

リスクの推定は、 ConfirmImpact と呼ばれるコマンドレットまたは関数の属性です。 ユーザーはそれを変更することはできません。

システムにリスクをもたらす可能性のあるコマンドレットと関数には Confirm パラメーターがあり、1 つのコマンドの確認を要求または抑制するために使用できます。

ほとんどのコマンドレットと関数では、既定のリスク値 ConfirmImpact ( 中) が使用され、既定値 $ConfirmPreferenceHigh であるため、自動確認はめったに発生しません。 ただし、 の値 $ConfirmPreference[中] または [ ] に変更することで、自動確認を有効にすることができます。

この例では、変数の既定値 High の$ConfirmPreference効果を示します。 [高] の値は、リスクの高いコマンドレットと関数のみを確認します。 ほとんどのコマンドレットと関数は中程度のリスクであるため、自動的には確認されず、 Remove-Item ファイルが削除されます。 コマンドに を追加 -Confirm すると、ユーザーに確認を求められます。

$ConfirmPreference
High
Remove-Item -Path C:\temp1.txt

を使用して -Confirm 確認を要求します。

Remove-Item -Path C:\temp2.txt -Confirm
Confirm
Are you sure you want to perform this action?
Performing operation "Remove File" on Target "C:\temp2.txt".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All
[?] Help (default is "Y"):

次の例は、 の値を Medium に変更した場合の$ConfirmPreference影響を示しています。 ほとんどのコマンドレットと関数は中程度のリスクであるため、自動的に確認されます。 1 つのコマンドに対する確認プロンプトを表示しないようにするには、 Confirm パラメーターを使用し、 の $false値を指定します。

$ConfirmPreference = "Medium"
Remove-Item -Path C:\temp2.txt
Confirm
Are you sure you want to perform this action?
Performing operation "Remove File" on Target "C:\temp2.txt".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All
[?] Help (default is "Y"):
Remove-Item -Path C:\temp3.txt -Confirm:$false

$DebugPreference

スクリプト、コマンドレット、またはプロバイダー、または Write-Debug コマンド ラインのコマンドによって生成されたデバッグ メッセージに PowerShell が応答する方法を決定します。

変数は$DebugPreference、列挙値 (ActionPreferenceSilentlyContinueStopContinueInquireIgnoreSuspend、Break) のいずれかを受け取ります

一部のコマンドレットでは、デバッグ メッセージが表示されます。通常は、プログラマやテクニカル サポートの専門家向けに設計されたテクニカル メッセージです。 既定では、デバッグ メッセージは表示されませんが、 の $DebugPreference値を変更することでデバッグ メッセージを表示できます。

コマンドレットの Debug 共通パラメーターを使用すると、特定のコマンドのデバッグ メッセージを表示または非表示にすることができます。 詳細については、「about_CommonParameters」を参照してください。

有効な値は次のとおりです。

  • 停止: デバッグ メッセージを表示し、実行を停止します。 コンソールにエラーを書き込みます。
  • Inquire: デバッグ メッセージを表示し、続行するかどうかを確認します。 デバッグ共通パラメーターをコマンドに追加すると、デバッグ メッセージを生成するようにコマンドが構成されると、変数の値が $DebugPreferenceInquire に変更されます。
  • 続行: デバッグ メッセージを表示し、実行を続行します。
  • SilentlyContinue: (既定値) 効果はありません。 デバッグ メッセージは表示されず、中断することなく実行が続行されます。

次の例は、コマンド ラインでコマンドを入力したときの の $DebugPreference 値を Write-Debug 変更する効果を示しています。 この変更は、コマンドレットとスクリプトによって生成されたメッセージを含むすべてのデバッグ メッセージに影響します。 例 では、1 つのコマンドに関連するデバッグ メッセージを表示または非表示にする Debug パラメーターを示します。

この例では、変数の $DebugPreference 既定値 SilentlyContinue の効果を示します。 既定では、 Write-Debug コマンドレットのデバッグ メッセージは表示されません。処理は続行されます。 Debug パラメーターを使用すると、1 つのコマンドの設定がオーバーライドされます。 デバッグ メッセージが表示されます。

$DebugPreference
SilentlyContinue
Write-Debug -Message "Hello, World"
Write-Debug -Message "Hello, World" -Debug
DEBUG: Hello, World

この例では、 の効果 $DebugPreferenceContinue 値を示します。 デバッグ メッセージが表示され、コマンドの処理が続行されます。

$DebugPreference = "Continue"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World

この例では、 Debug パラメーターを値 が の $false 状態で使用して、1 つのコマンドのメッセージを抑制します。 デバッグ メッセージは表示されません。

Write-Debug -Message "Hello, World" -Debug:$false

この例では、Stop 値に設定した場合の$DebugPreference効果を示します。 デバッグ メッセージが表示され、コマンドが停止します。

$DebugPreference = "Stop"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World
Write-Debug : The running command stopped because the preference variable
 "DebugPreference" or common parameter is set to Stop: Hello, World
At line:1 char:1
+ Write-Debug -Message "Hello, World"

この例では、 Debug パラメーターを値 が の $false 状態で使用して、1 つのコマンドのメッセージを抑制します。 デバッグ メッセージは表示されません。処理は停止されません。

Write-Debug -Message "Hello, World" -Debug:$false

次の $DebugPreference 使用例は、 Inquire 値に設定される効果を示しています。 デバッグ メッセージが表示され、ユーザーに確認を求められます。

$DebugPreference = "Inquire"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World

Confirm
Continue with this operation?
[Y] Yes  [A] Yes to All  [H] Halt Command  [?] Help (default is "Y"):

この例では、 Debug パラメーターを値 が の $false 状態で使用して、1 つのコマンドのメッセージを抑制します。 デバッグ メッセージは表示されません。処理は続行されます。

Write-Debug -Message "Hello, World" -Debug:$false

$ErrorActionPreference

PowerShell が終了しないエラー (コマンドレットの処理を停止しないエラー) に応答する方法を決定します。 たとえば、コマンド ラインまたはスクリプト、コマンドレット、またはプロバイダーで、コマンドレットによって Write-Error 生成されたエラーなどです。

変数は$ErrorActionPreference、列挙値 (ActionPreferenceSilentlyContinueStopContinueInquireIgnoreSuspend、Break) のいずれかを受け取ります

コマンドレットの ErrorAction 共通パラメーターを使用して、特定のコマンドの基本設定をオーバーライドできます。

有効な値は次のとおりです。

  • 中断 - エラーが発生したとき、または例外が発生したときにデバッガーを入力します。
  • 続行: (既定値) エラー メッセージが表示され、実行が続行されます。
  • 無視: エラー メッセージを抑制し、コマンドの実行を続行します。 [無視] の値は、保存されたユーザー設定として使用されるのではなく、コマンドごとの使用を目的としています。 Ignore は変数の有効な値 $ErrorActionPreference ではありません。
  • Inquire: エラー メッセージが表示され、続行するかどうかを確認するメッセージが表示されます。
  • SilentlyContinue: 効果はありません。 エラー メッセージは表示されず、中断することなく実行が続行されます。
  • 停止: エラー メッセージを表示し、実行を停止します。 Stop 値は、生成されたエラーに加えて、エラー ストリームに ActionPreferenceStopException オブジェクトを生成します。
  • 中断: ワークフロー ジョブを自動的に中断して、さらに調査できるようにします。 調査後、ワークフローを再開できます。 Suspend 値は、保存されたユーザー設定として使用されるのではなく、コマンドごとの使用を目的としています。 Suspend は変数の有効な値 $ErrorActionPreference ではありません。

$ErrorActionPreferenceErrorAction パラメーターは、コマンドレットの処理を停止する終了エラーに対する PowerShell の応答には影響しません。 ErrorAction 共通パラメーターの詳細については、「about_CommonParameters」を参照してください。

これらの例は、変数のさまざまな値の効果を $ErrorActionPreference 示しています。 ErrorAction パラメーターは、値をオーバーライド$ErrorActionPreferenceするために使用されます。

この例では、既定値の Continue$ErrorActionPreference示します。 終了しないエラーが生成されます。 メッセージが表示され、処理が続行されます。

# Change the ErrorActionPreference to 'Continue'
$ErrorActionPreference = 'Continue'
# Generate a non-terminating error and continue processing the script.
Write-Error -Message  'Test Error' ; Write-Host 'Hello World'
Write-Error: Test Error
Hello World

この例では、既定値の $ErrorActionPreferenceInquire を示します。 エラーが生成され、アクションのプロンプトが表示されます。

# Change the ErrorActionPreference to 'Inquire'
$ErrorActionPreference = 'Inquire'
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
Confirm
Test Error
[Y] Yes  [A] Yes to All  [H] Halt Command  [S] Suspend  [?] Help (default is "Y"):

この例では、設定を $ErrorActionPreferenceSilentlyContinue に示します。 エラー メッセージは抑制されます。

# Change the ErrorActionPreference to 'SilentlyContinue'
$ErrorActionPreference = 'SilentlyContinue'
# Generate an error message
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
# Error message is suppressed and script continues processing
Hello World

この例では、Stop に設定されている $ErrorActionPreference を示します。 また、変数に対して生成された追加の $Error オブジェクトも表示されます。

# Change the ErrorActionPreference to 'Stop'
$ErrorActionPreference = 'Stop'
# Error message is is generated and script stops processing
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'

# Show the ActionPreferenceStopException and the error generated
$Error[0]
$Error[1]
Write-Error: Test Error

ErrorRecord                 : Test Error
WasThrownFromThrowStatement : False
TargetSite                  : System.Collections.ObjectModel.Collection`1[System.Management.Automation.PSObject]
                              Invoke(System.Collections.IEnumerable)
StackTrace                  :    at System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input)
                                 at Microsoft.PowerShell.Executor.ExecuteCommandHelper(Pipeline tempPipeline,
                              Exception& exceptionThrown, ExecutionOptions options)
Message                     : The running command stopped because the preference variable "ErrorActionPreference" or
                              common parameter is set to Stop: Test Error
Data                        : {System.Management.Automation.Interpreter.InterpretedFrameInfo}
InnerException              :
HelpLink                    :
Source                      : System.Management.Automation
HResult                     : -2146233087

Write-Error: Test Error

$ErrorView

PowerShell でのエラー メッセージの表示形式を決定します。

変数は$ErrorViewNormalView、CategoryView、または ConciseView のいずれかの列挙値を受け取ります。ErrorView

有効な値は次のとおりです。

  • ConciseView: (既定値) 高度なモジュール ビルダー用の簡潔なエラー メッセージとリファクタリングされたビューを提供します。 PowerShell 7.2 の時点で、エラーがコマンド ラインまたはスクリプト モジュールからの場合、出力は 1 行のエラー メッセージです。 それ以外の場合は、エラーを含む複数行のエラー メッセージと、その行で発生する場所を示すエラーへのポインターが表示されます。 ターミナルで Virtual Terminal がサポートされている場合は、ANSI カラー コードを使用して色のアクセントが提供されます。 アクセントの色は で $Host.PrivateData.ErrorAccentColor変更できます。 内部例外を含む、完全修飾エラーの包括的な詳細ビューにはコマンドレットを使用 Get-Error します。

    PowerShell 7 で、ConciseView が追加されました。

  • NormalView: ほとんどのユーザー向けに設計された詳細ビュー。 エラーの説明と、エラーに関連するオブジェクトの名前で構成されます。

  • CategoryView: 運用環境向けに設計された簡潔で構造化されたビュー。 その形式は次のとおりです。

    {Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason}

CategoryView のフィールドの詳細については、「ErrorCategoryInfo クラス」を参照してください。

この例では、 の $ErrorView 値が既定の "ConciseView" の場合にエラーがどのように表示されるかを示します。 Get-ChildItem は、存在しないディレクトリを検索するために使用されます。

Get-ChildItem -path 'C:\NoRealDirectory'
Get-ChildItem: Cannot find path 'C:\NoRealDirectory' because it does not exist.

この例では、 の $ErrorView 値が既定の "ConciseView" の場合にエラーがどのように表示されるかを示します。 Script.ps1 が実行され、ステートメントから Get-Item エラーがスローされます。

./Script.ps1
Get-Item: C:\Script.ps1
Line |
  11 | Get-Item -Path .\stuff
     | ^ Cannot find path 'C:\demo\stuff' because it does not exist.

この例では、 の $ErrorView 値が NormalView に変更されたときにエラーがどのように表示されるかを示します。 Get-ChildItem は、存在しないファイルを検索するために使用されます。

Get-ChildItem -Path C:\nofile.txt
Get-ChildItem : Cannot find path 'C:\nofile.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -Path C:\nofile.txt

この例では、 の $ErrorView 値が CategoryView に変更されたときに、同じエラーがどのように表示されるかを示します。

$ErrorView = "CategoryView"
Get-ChildItem -Path C:\nofile.txt
ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem], ItemNotFoundException

この例では、 の $ErrorView 値がエラー表示にのみ影響することを示します。 自動変数に格納されている $Error エラー オブジェクトの構造は変更されません。 自動変数の $Error 詳細については、「 about_automatic_variables」を参照してください。

次のコマンドは、エラー配列要素 0 の最新のエラーに関連付けられている ErrorRecord オブジェクトを取得し、リスト内のオブジェクトのプロパティを書式設定します。

$Error[0] | Format-List -Property * -Force
PSMessageDetails      :
Exception             : System.Management.Automation.ItemNotFoundException:
                          Cannot find path 'C:\nofile.txt' because it does
                          not exist.
                        at System.Management.Automation.SessionStateInternal.
                          GetChildItems(String path, Boolean recurse, UInt32
                          depth, CmdletProviderContext context)
                        at System.Management.Automation.ChildItemCmdlet
                          ProviderIntrinsics.Get(String path, Boolean
                          recurse, UInt32 depth, CmdletProviderContext context)
                        at Microsoft.PowerShell.Commands.GetChildItemCommand.
                          ProcessRecord()
TargetObject          : C:\nofile.txt
CategoryInfo          : ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem],
                          ItemNotFoundException
FullyQualifiedErrorId : PathNotFound,
                          Microsoft.PowerShell.Commands.GetChildItemCommand
ErrorDetails          :
InvocationInfo        : System.Management.Automation.InvocationInfo
ScriptStackTrace      : at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {0, 1}

$FormatEnumerationLimit

ディスプレイに含まれる列挙項目の数を指定します。 この変数は、基になるオブジェクトには影響せず、表示にのみ影響します。 の $FormatEnumerationLimit 値が列挙項目の数より少ない場合、PowerShell は省略記号 (...) を追加して、アイテムが表示されないことを示します。

有効な値: 整数 (Int32)

既定値: 4

この例では、 変数を使用 $FormatEnumerationLimit して列挙項目の表示を改善する方法を示します。

この例のコマンドは、コンピューター上で実行されているすべてのサービスを 2 つのグループ (1 つは実行中のサービス、1 つは停止したサービス) で一覧表示するテーブルを生成します。 コマンドを Get-Service 使用してすべてのサービスを取得し、パイプライン経由で結果を コマンドレットに Group-Object 送信し、結果をサービスの状態別にグループ化します。

結果は、[ 名前] 列の状態と[ グループ ] 列のプロセスを一覧表示するテーブルです。 列ラベルを変更するには、ハッシュ テーブルを使用して、「 about_Hash_Tables」を参照してください。 詳細については、「 Format-Table」の例を参照してください。

の現在の値を $FormatEnumerationLimit検索します。

$FormatEnumerationLimit
4

[状態] でグループ化されたすべてのサービスを一覧表示します。 各状態の [グループ] 列には最大 4 つのサービスが表示されます。値は 4 であるためです$FormatEnumerationLimit

Get-Service | Group-Object -Property Status
Count  Name       Group
-----  ----       -----
60     Running    {AdtAgent, ALG, Ati HotKey Poller, AudioSrv...}
41     Stopped    {Alerter, AppMgmt, aspnet_state, ATI Smart...}

一覧表示される項目の数を増やすには、 の $FormatEnumerationLimit 値を 1000 に増やします。 サービスを表示するには、 と Group-Object を使用Get-Serviceします。

$FormatEnumerationLimit = 1000
Get-Service | Group-Object -Property Status
Count  Name       Group
-----  ----       -----
60     Running    {AdtAgent, ALG, Ati HotKey Poller, AudioSrv, BITS, CcmExec...
41     Stopped    {Alerter, AppMgmt, aspnet_state, ATI Smart, Browser, CiSvc...

サービスの一覧を表示するには、Wrap パラメーターと共に を使用Format-Tableします。

Get-Service | Group-Object -Property Status | Format-Table -Wrap
Count  Name       Group
-----  ----       -----
60     Running    {AdtAgent, ALG, Ati HotKey Poller, AudioSrv, BITS, CcmExec,
                  Client for NFS, CryptSvc, DcomLaunch, Dhcp, dmserver,
                  Dnscache, ERSvc, Eventlog, EventSystem, FwcAgent, helpsvc,
                  HidServ, IISADMIN, InoRPC, InoRT, InoTask, lanmanserver,
                  lanmanworkstation, LmHosts, MDM, Netlogon, Netman, Nla,
                  NtLmSsp, PlugPlay, PolicyAgent, ProtectedStorage, RasMan,
                  RemoteRegistry, RpcSs, SamSs, Schedule, seclogon, SENS,
                  SharedAccess, ShellHWDetection, SMT PSVC, Spooler,
                  srservice, SSDPSRV, stisvc, TapiSrv, TermService, Themes,
                  TrkWks, UMWdf, W32Time, W3SVC, WebClient, winmgmt, wscsvc,
                  wuauserv, WZCSVC, zzInterix}

41     Stopped    {Alerter, AppMgmt, aspnet_state, ATI Smart, Browser, CiSvc,
                  ClipSrv, clr_optimization_v2.0.50727_32, COMSysApp,
                  CronService, dmadmin, FastUserSwitchingCompatibility,
                  HTTPFilter, ImapiService, Mapsvc, Messenger, mnmsrvc,
                  MSDTC, MSIServer, msvsmon80, NetDDE, NetDDEdsdm, NtmsSvc,
                  NVSvc, ose, RasAuto, RDSessMgr, RemoteAccess, RpcLocator,
                  SCardSvr, SwPrv, SysmonLog, TlntSvr, upnphost, UPS, VSS,
                  WmdmPmSN, Wmi, WmiApSrv, xmlprov}

$InformationPreference

$InformationPreference変数を使用すると、ユーザーに表示する情報ストリーム設定を設定できます。 具体的には、 Write-Information コマンドレットを追加してコマンドまたはスクリプトに追加した情報メッセージです。 InformationAction パラメーターを使用すると、その値によって変数の値が$InformationPreferenceオーバーライドされます。 Write-Information は PowerShell 5.0 で導入されました。

変数は$InformationPreference、列挙値 (ActionPreferenceSilentlyContinueStopContinueInquireIgnoreSuspend、Break) のいずれかを受け取ります

有効な値は次のとおりです。

  • 停止: コマンドが発生した時点で、コマンドまたはスクリプトを Write-Information 停止します。
  • Inquire: コマンドで指定した情報メッセージを Write-Information 表示し、続行するかどうかを確認します。
  • 続行: 情報メッセージを表示し、実行を続行します。
  • Suspend は、PowerShell 6 以降でサポートされていないワークフローでのみ使用できます。
  • SilentlyContinue: (既定値) 効果はありません。 情報メッセージは表示されず、スクリプトは中断されずに続行されます。

$Log*イベント

Log*Event 基本設定変数は、イベント ビューアーで PowerShell イベント ログに書き込まれるイベントの種類を決定します。 既定では、エンジンとプロバイダーのイベントのみがログに記録されます。 ただし、 Log*Event 基本設定変数を使用して、コマンドに関するイベントのログ記録など、ログをカスタマイズできます。

Log*Event 基本設定変数は次のとおりです。

  • $LogCommandHealthEvent: コマンドの初期化と処理でエラーと例外をログに記録します。 既定値は $false (ログに記録されません) です。
  • $LogCommandLifecycleEvent: コマンドとコマンド パイプラインの開始と停止、およびコマンド検出のセキュリティ例外をログに記録します。 既定値は $false (ログに記録されません) です。
  • $LogEngineHealthEvent: セッションのエラーとエラーをログに記録します。 既定値は $true (ログに記録されます) です。
  • $LogEngineLifecycleEvent: セッションの開始と終了をログに記録します。 既定値は $true (ログに記録されます) です。
  • $LogProviderHealthEvent: 読み取りおよび書き込みエラー、参照エラー、呼び出しエラーなどのプロバイダー エラーをログに記録します。 既定値は $true (ログに記録されます) です。
  • $LogProviderLifecycleEvent: PowerShell プロバイダーの追加と削除をログに記録します。 既定値は $true (ログに記録されます) です。 PowerShell プロバイダーの詳細については、「 about_Providers」を参照してください。

Log*Event を有効にするには、 の値$trueを持つ変数を入力します。次に例を示します。

$LogCommandLifeCycleEvent = $true

イベントの種類を無効にするには、 の値 $falseを持つ変数を入力します。次に例を示します。

$LogCommandLifeCycleEvent = $false

有効にするイベントは、現在の PowerShell コンソールに対してのみ有効です。 構成をすべてのコンソールに適用するには、PowerShell プロファイルに変数設定を保存します。 詳細については、「about_Profiles」を参照してください。

$MaximumHistoryCount

現在のセッションのコマンド履歴に保存されるコマンドの数を指定します。

有効な値: 1 から 32768 (Int32)

既定値: 4096

コマンド履歴に現在保存されているコマンドの数を確認するには、次のように入力します。

(Get-History).Count

セッション履歴に保存されているコマンドを表示するには、 コマンドレットを Get-History 使用します。 詳細については、「 about_History」を参照してください。

$OFS

出力フィールド区切り文字 (OFS) は、文字列に変換される配列の要素を区切る文字を指定します。

有効な値: 任意の文字列。

既定値: スペース

既定では、変数は存在せず、 $OFS 出力ファイルの区切り記号はスペースですが、この変数を追加して任意の文字列に設定できます。 と入力$OFS="<value>"して、セッション内の の$OFS値を変更できます。

注意

スクリプト、モジュール、または構成出力でスペース (" ") の既定値が必要な場合は、既定値がコードの他の場所で変更されていないことに注意 $OFS してください。

この例では、配列が文字列に変換されるときに、スペースを使用して値を区切る方法を示します。 この場合、整数の配列は変数に格納され、変数は文字列としてキャストされます。

$array = 1,2,3,4
[string]$array
1 2 3 4

区切り記号を変更するには、値を $OFS 割り当てて変数を追加します。 変数には という名前を付 $OFSける必要があります。

$OFS = "+"
[string]$array
1+2+3+4

既定の動作を復元するには、 の値$OFSにスペース (" ") を割り当てるか、変数を削除します。 次のコマンドは、変数を削除し、区切り記号がスペースであることを確認します。

Remove-Variable OFS
[string]$array
1 2 3 4

$OutputEncoding

PowerShell が他のアプリケーションにテキストを送信するときに使用する文字エンコード 方法を決定します。

たとえば、アプリケーションが Unicode 文字列を PowerShell に返す場合は、文字を正しく送信するために値を UnicodeEncoding に変更する必要がある場合があります。

有効な値は、ASCIIEncodingUTF7Encoding、UTF8EncodingUTF32EncodingUnicodeEncoding などの Encoding クラスから派生したオブジェクトです。

既定値: UTF8Encoding オブジェクト。

この例では、中国語などの Unicode 文字を使用する言語用にローカライズされたコンピューターで、PowerShell で Windows findstr.exe コマンドを動作させる方法を示します。

最初のコマンドは、 の値 $OutputEncodingを検索します。 値はエンコード オブジェクトであるため、 EncodingName プロパティのみを表示します。

$OutputEncoding.EncodingName

この例では、コマンドを findstr.exe 使用して、ファイルに存在する 2 つの中国語文字を Test.txt 検索します。 この findstr.exe コマンドを Windows コマンド プロンプト (cmd.exe) findstr.exe で実行すると、テキスト ファイル内の文字が検索されます。 ただし、PowerShell で同じ findstr.exe コマンドを実行すると、文字が見つかりません。これは、PowerShell が Unicode テキストではなく ASCII テキストでに送信 findstr.exe するためです。

findstr <Unicode-characters>

PowerShell でコマンドを機能させるには、 の $OutputEncoding 値をコンソールの OutputEncoding プロパティの値に設定します。これは、Windows 用に選択されているロケールに基づきます。 OutputEncoding はコンソールの静的プロパティであるため、 コマンドで二重コロン (::) を使用します。

$OutputEncoding = [console]::OutputEncoding
$OutputEncoding.EncodingName
OEM United States

エンコードの変更後、コマンドは findstr.exe Unicode 文字を検索します。

findstr <Unicode-characters>
test.txt:         <Unicode-characters>

$ProgressPreference

Write-Progress コマンドレットによって生成された進行状況バーなど、スクリプト、コマンドレット、またはプロバイダーによって生成された進行状況の更新に対する PowerShell の応答方法を決定します。 コマンドレットは Write-Progress 、コマンドの状態を示す進行状況バーを作成します。

変数は$ProgressPreference、列挙値 (ActionPreferenceSilentlyContinueStopContinueInquireIgnoreSuspendBreak) のいずれかを受け取ります。

有効な値は次のとおりです。

  • 停止: 進行状況バーは表示されません。 代わりに、エラー メッセージが表示され、実行が停止されます。
  • お問い合わせ: 進行状況バーは表示されません。 続行するアクセス許可を求めるメッセージが表示されます。 または AY返信すると、進行状況バーが表示されます。
  • 続行: (既定値) 進行状況バーが表示され、実行が続行されます。
  • SilentlyContinue: コマンドを実行しますが、進行状況バーは表示されません。

$PSDefaultParameterValues

コマンドレットと高度な関数のパラメーターの既定値を指定します。 の $PSDefaultParameterValues 値はハッシュ テーブルで、キーはコマンドレット名とパラメーター名で構成され、コロン (:) で区切られます。 値は、指定したカスタムの既定値です。

$PSDefaultParameterValues は PowerShell 3.0 で導入されました。

この基本設定変数の詳細については、「 about_Parameters_Default_Values」を参照してください。

$PSEmailServer

電子メール メッセージの送信に使用される既定の電子メール サーバーを指定します。 この基本設定変数は、 Send-MailMessage コマンドレットなどの電子メールを送信するコマンドレットで使用されます。

$PSModuleAutoloadingPreference

セッション内のモジュールの自動インポートを有効または無効にします。 すべてが 既定値です。 モジュールをインポートするには、モジュール内の任意のコマンドを取得または使用します。 たとえば、 Get-Commandを使用します。 変数は $PSModuleAutoloadingPreference 既定では存在しません。 変数が定義されていない場合の既定の動作は と同じです $PSModuleAutoloadingPreference = 'All'

変数の値に関係なく、 Import-Module を使用してモジュールをインポートできます。

変数は $PSModuleAutoloadingPreference 、次のいずれかを受け取ります。PSModuleAutoLoadingPreference 列挙値: NoneModuleQualified、または All

有効な値は次のとおりです。

  • すべて: モジュールは初回使用時に自動的にインポートされます。
  • ModuleQualified: モジュールは、ユーザーがモジュール内のコマンドのモジュール修飾名を使用する場合にのみ自動的にインポートされます。 たとえば、ユーザーが と入力 MyModule\MyCommandした場合、PowerShell は MyModule モジュールをインポートします。
  • なし: モジュールの自動インポートは、セッションで無効になっています。 モジュールをインポートするには、 コマンドレットを使用します Import-Module

モジュールの自動インポートの詳細については、「 about_Modules」を参照してください。

$PSNativeCommandArgumentPassing

注意

$PSNativeCommandArgumentPassing は、PowerShell 7.3 で主流となった実験的な機能でした。 詳細については、「 試験的な機能の使用」を参照してください。

PowerShell では、 ArgumentList ネイティブ実行可能ファイルを呼び出すときに StartProcessInfo 文字列を再構築するのではなく、 オブジェクトの プロパティを使用します。

注意事項

新しい動作は、現在の動作からの破壊的変更です。 これにより、ネイティブ アプリケーションを呼び出す際のさまざまな問題に対処するスクリプトと自動化が中断される場合があります。 歴史的に、引用符をエスケープする必要があり、ネイティブ アプリケーションに空の引数を指定することはできません。

自動変数 $PSNativeCommandArgumentPassing を使用すると、実行時に動作を選択できます。 有効な値は、LegacyStandardWindows です。 Legacy は過去の動作です。 実験的な機能が有効になっている場合の既定値は、新しい Standard 動作です。

ユーザー設定変数が次のファイルの呼び出しに Windows 設定されている場合は、style 引数の受け渡しが自動的に Legacy 使用されます。

  • cmd.exe
  • cscript.exe
  • wscript.exe
  • .bat で終わる
  • .cmd で終わる
  • .js で終わる
  • .vbs で終わる
  • .wsf で終わる

$PSNativeArgumentPassingLegacy または Standard のいずれかに設定されている場合、これらのファイルのチェックは行われません。 既定の動作は、プラットフォームに固有です。 Windows プラットフォームの場合、既定の設定は Windows で、Windows 以外のプラットフォームでは Standard です。

この変更によって利用可能になった新しい動作は次のとおりです。

  • リテラルまたは展開可能な文字列に引用符が埋め込まれ、その引用符が保持されるようになりました。

    PS > $a = 'a" "b'
    PS > $PSNativeCommandArgumentPassing = "Legacy"
    PS > testexe -echoargs $a 'a" "b' a" "b
    Arg 0 is <a b>
    Arg 1 is <a b>
    Arg 2 is <a b>
    PS > $PSNativeCommandArgumentPassing = "Standard"
    PS > testexe -echoargs $a 'a" "b' a" "b
    Arg 0 is <a" "b>
    Arg 1 is <a" "b>
    Arg 2 is <a b>
    
  • 空の文字列が引数として保持されるようになりました。

    PS>  $PSNativeCommandArgumentPassing = "Legacy"
    PS> testexe -echoargs '' a b ''
    Arg 0 is <a>
    Arg 1 is <b>
    PS> $PSNativeCommandArgumentPassing = "Standard"
    PS> testexe -echoargs '' a b ''
    Arg 0 is <>
    Arg 1 is <a>
    Arg 2 is <b>
    Arg 3 is <>
    

新しい動作では、次のような呼び出しは変更されません。

PS> $PSNativeCommandArgumentPassing = "Legacy"
PS> testexe -echoargs -k com:port=\\devbox\pipe\debug,pipe,resets=0,reconnect
Arg 0 is <-k>
Arg 1 is <com:port=\\devbox\pipe\debug,pipe,resets=0,reconnect>
PS> $PSNativeCommandArgumentPassing = "Standard"
PS> testexe -echoargs -k com:port=\\devbox\pipe\debug,pipe,resets=0,reconnect
Arg 0 is <-k>
Arg 1 is <com:port=\\devbox\pipe\debug,pipe,resets=0,reconnect>

また、パラメーター トレースが提供され、Trace-Command によってデバッグに役立つ情報が提供されるようになりました。

PS> $PSNativeCommandArgumentPassing = "Legacy"
PS> trace-command -PSHOST -Name ParameterBinding { testexe -echoargs $a 'a" "b' a" "b }
DEBUG: 2021-02-01 17:19:53.6438 ParameterBinding Information: 0 : BIND NAMED native application line args [/Users/james/src/github/forks/jameswtruher/PowerShell-1/test/tools/TestExe/bin/testexe]
DEBUG: 2021-02-01 17:19:53.6440 ParameterBinding Information: 0 :     BIND argument [-echoargs a" "b a" "b "a b"]
DEBUG: 2021-02-01 17:19:53.6522 ParameterBinding Information: 0 : CALLING BeginProcessing
Arg 0 is <a b>
Arg 1 is <a b>
Arg 2 is <a b>
PS> $PSNativeCommandArgumentPassing = "Standard"
PS> trace-command -PSHOST -Name ParameterBinding { testexe -echoargs $a 'a" "b' a" "b }
DEBUG: 2021-02-01 17:20:01.9829 ParameterBinding Information: 0 : BIND NAMED native application line args [/Users/james/src/github/forks/jameswtruher/PowerShell-1/test/tools/TestExe/bin/testexe]
DEBUG: 2021-02-01 17:20:01.9829 ParameterBinding Information: 0 :     BIND cmd line arg [-echoargs] to position [0]
DEBUG: 2021-02-01 17:20:01.9830 ParameterBinding Information: 0 :     BIND cmd line arg [a" "b] to position [1]
DEBUG: 2021-02-01 17:20:01.9830 ParameterBinding Information: 0 :     BIND cmd line arg [a" "b] to position [2]
DEBUG: 2021-02-01 17:20:01.9831 ParameterBinding Information: 0 :     BIND cmd line arg [a b] to position [3]
DEBUG: 2021-02-01 17:20:01.9908 ParameterBinding Information: 0 : CALLING BeginProcessing
Arg 0 is <a" "b>
Arg 1 is <a" "b>
Arg 2 is <a b>

$PSNativeCommandUseErrorActionPreference

この基本設定変数は、機能が有効になっている PowerShell 7.3 以降で PSNativeCommandErrorActionPreference 使用できます。

この機能を有効にすると、$PSNativeCommandUseErrorActionPreference$true の場合の $ErrorActionPreference に応じて、0 以外の終了コードを持つネイティブ コマンドによってエラーが発生します。

注意

PSNativeCommandUseErrorActionPreference は、PowerShell 7.3 で追加された試験的な機能です。 詳細については、「 試験的な機能の使用」を参照してください。

$PSSessionApplicationName

Web Services for Management (WS-Management) テクノロジを使用するリモート コマンドの既定のアプリケーション名を指定します。 詳細については、「 Windows リモート管理について」を参照してください。

システムの既定のアプリケーション名は WSMANですが、この基本設定変数を使用して既定値を変更できます。

アプリケーション名は、接続 URI の最後のノードです。 たとえば、次のサンプル URI のアプリケーション名は です WSMAN

http://Server01:8080/WSMAN

既定のアプリケーション名は、リモート コマンドで接続 URI またはアプリケーション名が指定されていない場合に使用されます。

WinRM サービスでは、アプリケーション名を使用して、接続要求をサービスするリスナーを選択します。 パラメーターの値は、リモート コンピューター上のリスナーの URLPrefix プロパティの値と一致する必要があります。

システムの既定値とこの変数の値をオーバーライドし、特定のセッションに別のアプリケーション名を選択するには、New-PSSession、Enter-PSSession、または Invoke-Command コマンドレットの ConnectionURI パラメーターまたは ApplicationName パラメーターを使用します。

$PSSessionApplicationNameユーザー設定変数はローカル コンピューターで設定されますが、リモート コンピューター上のリスナーを指定します。 指定したアプリケーション名がリモート コンピューターに存在しない場合、セッションを確立するコマンドは失敗します。

$PSSessionConfigurationName

現在のセッションで作成された PSSession に 使用される既定のセッション構成を指定します。

この基本設定変数はローカル コンピューターで設定されますが、リモート コンピューター上にあるセッション構成を指定します。

変数の $PSSessionConfigurationName 値は、完全修飾リソース URI です。

既定値 http://schemas.microsoft.com/PowerShell/microsoft.PowerShell は、リモート コンピューター上の Microsoft.PowerShell セッション構成を示します。

構成名のみを指定すると、次のスキーマ URI が先頭に付加されます。

http://schemas.microsoft.com/PowerShell/

、、または Invoke-Command コマンドレットの ConfigurationName パラメーターを使用して、既定をオーバーライドし、特定のセッションに対して別のセッション構成をNew-PSSessionEnter-PSSession選択できます。

この変数の値はいつでも変更できます。 これを行う場合は、選択するセッション構成がリモート コンピューター上に存在する必要があります。 そうでない場合、セッション構成を使用するセッションを作成するコマンドは失敗します。

この基本設定変数は、リモート ユーザーがこのコンピューターに接続するセッションを作成するときに使用されるローカル セッション構成を決定しません。 ただし、ローカル セッション構成のアクセス許可を使用して、使用できるユーザーを特定できます。

$PSSessionOption

リモート セッションの高度なユーザー オプションの既定値を確立します。 これらのオプション設定は、セッション・オプションのシステムデフォルト値をオーバーライドします。

変数には $PSSessionOptionPSSessionOption オブジェクトが 含まれています。 詳細については、「 System.Management.Automation.Remoting.PSSessionOption」を参照してください。 オブジェクトの各プロパティは、セッション オプションを表します。 たとえば、 NoCompression プロパティは、セッション中にデータ圧縮を行います。

既定では、 $PSSessionOption 変数には PSSessionOption オブジェクトが含まれています。次に示すように、すべてのオプションの既定値を指定します。

MaximumConnectionRedirectionCount : 5
NoCompression                     : False
NoMachineProfile                  : False
ProxyAccessType                   : None
ProxyAuthentication               : Negotiate
ProxyCredential                   :
SkipCACheck                       : False
SkipCNCheck                       : False
SkipRevocationCheck               : False
OperationTimeout                  : 00:03:00
NoEncryption                      : False
UseUTF16                          : False
IncludePortInSPN                  : False
OutputBufferingMode               : None
Culture                           :
UICulture                         :
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize         : 209715200
ApplicationArguments              :
OpenTimeout                       : 00:03:00
CancelTimeout                     : 00:01:00
IdleTimeout                       : -00:00:00.0010000

これらのオプションと詳細については、「 New-PSSessionOption」を参照してください。 リモート コマンドとセッションの詳細については、「 about_Remoteabout_PSSessions」を参照してください。

ユーザー設定変数の値を $PSSessionOption 変更するには、 コマンドレットを New-PSSessionOption 使用して、必要なオプション値を使用して PSSessionOption オブジェクトを作成します。 という名前の変数 $PSSessionOptionに出力を保存します。

$PSSessionOption = New-PSSessionOption -NoCompression

すべての PowerShell セッションで基本設定変数を $PSSessionOption 使用するには、変数を New-PSSessionOption 作成するコマンドを $PSSessionOption PowerShell プロファイルに追加します。 詳細については、「about_Profiles」を参照してください。

特定のリモート セッションのカスタム オプションを設定できます。 設定したオプションは、システムの既定値とユーザー設定変数の $PSSessionOption 値よりも優先されます。

カスタム セッション オプションを設定するには、 コマンドレットを New-PSSessionOption 使用して PSSessionOption オブジェクトを 作成します。 次に、セッションを作成するコマンドレット (、 などNew-PSSessionEnter-PSSession) の SessionOption パラメーターの値として PSSessionOption オブジェクトをInvoke-Command使用します。

$PSStyle

PowerShell 7.2 以降では、自動変数に $PSStyle アクセスして ANSI 文字列出力のレンダリングを表示および変更できるようになりました。 変数には、次のプロパティが含まれています。

  • リセット - すべての装飾をオフにする
  • 点滅 - 点滅 をオンにします
  • BlinkOff - 点滅 をオフにする
  • 太字 - 太字 をオンにする
  • BoldOff - 太字をオフにする
  • 非表示 - 非表示 をオンにします
  • HiddenOff - 非表示 をオフにする
  • 反転 - 反転をオンにします
  • ReverseOff - 反転をオフにする
  • 斜体 - 斜体をオンにします
  • ItalicOff - 斜体をオフにします
  • 下線 - 下線をオンにします
  • UnderlineOff - 下線をオフにします
  • OutputRendering - 出力レンダリングを使用するタイミングを制御する
  • 背景 - 背景の色分けを制御する入れ子になったオブジェクト
  • フォアグラウンド - 前景の色分けを制御する入れ子になったオブジェクト
  • 書式設定 - 出力ストリームの既定の書式設定を制御する入れ子になったオブジェクト
  • Progress - 進行状況 バーのレンダリングを制御する入れ子になったオブジェクト
  • FileInfo - (試験段階) 入れ子になったオブジェクト。 FileInfo オブジェクトの色分けを制御します。

基本メンバーは、名前にマップされた ANSI エスケープ シーケンスの文字列を返します。 値は、カスタマイズできるように設定できます。 たとえば、太字を下線付きに変更できます。 プロパティ名を使用すると、タブ補完を使用して装飾文字列を簡単に作成できます。

"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"

次のメンバーは、ANSI 書式を使用する方法とタイミングを制御します。

  • $PSStyle.OutputRendering は、値を System.Management.Automation.OutputRendering 持つ列挙型です。

    • ANSI: これが既定の動作です。 ANSI は常にそのまま渡されます。

      重要

      出力をダウンストリームで実行することを目的としたファイルまたはパイプラインに出力をリダイレクトする場合は、 ANSI モードを使用する必要があります。 これにより、出力が変更されないようにします。 他のモードを使用すると、ANSI エスケープ シーケンスを削除することで出力が変更され、実行動作が変更される可能性があります。

    • PlainText: ANSI エスケープ シーケンスは常に取り除かれ、プレーン テキストのみになります。

    • ホスト: ANSI エスケープ シーケンスは、リダイレクトまたはパイプ出力で削除されます。

  • $PSStyle.Backgroundメンバーと $PSStyle.Foreground メンバーは、16 個の標準コンソール カラーの ANSI エスケープ シーケンスを含む文字列です。

    • Black
    • BrightBlack
    • White
    • BrightWhite
    • [赤]
    • BrightRed
    • 赤紫
    • BrightMagenta
    • BrightBlue
    • シアン
    • BrightCyan
    • [緑]
    • BrightGreen
    • BrightYellow

    値は設定可能であり、任意の数の ANSI エスケープ シーケンスを含めることができます。 24 ビットの色を指定するメソッドもあります FromRgb() 。 メソッドを呼び出すには FromRgb() 、2 つの方法があります。

    • string FromRgb(byte red, byte green, byte blue)
    • string FromRgb(int rgb)

    次のいずれかの例では、背景色を 24 ビットカラー のベージュに設定します。

    $PSStyle.Background.FromRgb(245, 245, 220)
    $PSStyle.Background.FromRgb(0xf5f5dc)
    
  • $PSStyle.Formatting は、デバッグ、エラー、詳細、および警告メッセージの既定の書式設定を制御する入れ子になったオブジェクトです。 太字や下線などの属性を制御することもできます。 これは、 $Host.PrivateData レンダリングの書式設定の色を管理する方法として置き換えられます。 $Host.PrivateData は下位互換性のために存在し続けますが、 に $PSStyle.Formatting接続されていません。

  • $PSStyle.Progress では、進行状況ビュー バーのレンダリングを制御できます。

    • スタイル - レンダリング スタイルを設定する ANSI 文字列。
    • MaxWidth - ビューの最大幅を設定します。 0 に設定するとコンソールの幅になります。 既定値は 120 です
    • ビュー - 値 MinimalClassicと を含む列挙型。 Classic は変更なしの既存の表示です。 Minimal は単一行の最小表示です。 Minimal が既定値です。
    • UseOSCIndicator - 既定値は です $false。 OSC インジケーターをサポートする端末の場合は、 を に $true 設定します。

    注意

    ホストで仮想ターミナルがサポートされていない場合、$PSStyle.Progress.View は自動的に Classic に設定されます。

    次の例では、レンダリング スタイルを最小限の進行状況バーに設定します。

    $PSStyle.Progress.View = Minimal
    

$PSStyle.FileInfo は、 FileInfo オブジェクトの色分けを制御する入れ子になったオブジェクトです。

  • ディレクトリ - ディレクトリ の色を指定する組み込みメンバー
  • シンボリック リンク - シンボリック リンクの色を指定する組み込みメンバー
  • 実行可能ファイル - 実行可能ファイル の色を指定する組み込みメンバー。
  • Extension - このメンバーを使用して、さまざまなファイル拡張子の色を定義します。 Extension メンバーには、アーカイブと PowerShell ファイルの拡張機能があらかじめ含まれています。

注意

$PSStyle.FileInfo は、試験的な機能が PSAnsiRenderingFileInfo 有効になっている場合にのみ使用できます。 詳細については、「 about_Experimental_Features 」および「 試験的な機能の使用」を参照してください。

PowerShell 7.3 では、この機能が PSAnsiRenderingFileInfo メインストリームになり、既定で使用できるようになります。

$Transcript

トランスクリプト ファイルの名前と場所を指定するために、 によって Start-Transcript 使用されます。 Path パラメーターに値を指定しない場合は、Start-Transcriptグローバル変数の値にパスを$Transcript使用します。 この変数を作成していない場合は、 Start-Transcript ディレクトリ内のトランスクリプトを $HOME\My Documents ファイルとして \PowerShell_transcript.<time-stamp>.txt 格納します。

$VerbosePreference

スクリプト、コマンドレット、またはプロバイダーによって生成された詳細メッセージ ( Write-Verbose コマンドレットによって生成されたメッセージなど) に PowerShell が応答する方法を決定します。 詳細メッセージは、コマンドを実行するために実行されるアクションを記述します。

既定では、詳細メッセージは表示されませんが、 の $VerbosePreference値を変更することでこの動作を変更できます。

変数は$VerbosePreference、列挙値 (ActionPreferenceSilentlyContinueStopContinueInquireIgnoreSuspendBreak) のいずれかを受け取ります。

有効な値は次のとおりです。

  • 停止: 詳細メッセージとエラー メッセージを表示し、実行を停止します。
  • Inquire: 詳細メッセージを表示し、続行するかどうかを確認するプロンプトを表示します。
  • 続行: 詳細メッセージを表示し、実行を続行します。
  • SilentlyContinue: (既定値) 詳細メッセージは表示されません。 実行を続行します。

コマンドレットの Verbose 共通パラメーターを使用して、特定のコマンドの詳細メッセージを表示または非表示にすることができます。 詳細については、「about_CommonParameters」を参照してください。

これらの例では、 のさまざまな値 $VerbosePreferenceVerbose パラメーターの効果を示して、基本設定の値をオーバーライドします。

この例では、 既定の SilentlyContinue 値の効果を示します。 コマンドは Message パラメーターを使用しますが、PowerShell コンソールにメッセージを書き込むわけではありません。

Write-Verbose -Message "Verbose message test."

Verbose パラメーターを使用すると、メッセージが書き込まれます。

Write-Verbose -Message "Verbose message test." -Verbose
VERBOSE: Verbose message test.

この例では、 Continue 値の効果を示します。 変数が $VerbosePreferenceContinue に設定され、メッセージが表示されます。

$VerbosePreference = "Continue"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.

この例では、 Continue 値をオーバーライドする の値 $false で Verbose パラメーターを使用 します。 メッセージは表示されません。

Write-Verbose -Message "Verbose message test." -Verbose:$false

この例では、 Stop 値の効果を示します。 変数が $VerbosePreferenceStop に設定され、メッセージが表示されます。 コマンドが停止しています。

$VerbosePreference = "Stop"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.
Write-Verbose : The running command stopped because the preference variable
  "VerbosePreference" or common parameter is set to Stop: Verbose message test.
At line:1 char:1
+ Write-Verbose -Message "Verbose message test."

この例では、Stop 値をオーバーライドする の値$falseで Verbose パラメーターを使用します。 メッセージは表示されません。

Write-Verbose -Message "Verbose message test." -Verbose:$false

この例では、 Inquire 値の効果を示します。 変数は $VerbosePreferenceInquire に設定されます。 メッセージが表示され、ユーザーに確認を求められます。

$VerbosePreference = "Inquire"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.

Confirm
Continue with this operation?
[Y] Yes  [A] Yes to All  [H] Halt Command  [?] Help (default is "Y"):

この例では、 Inquire 値をオーバーライドする の値 $false で Verbose パラメーターを使用 します。 ユーザーにメッセージが表示されないと、メッセージが表示されません。

Write-Verbose -Message "Verbose message test." -Verbose:$false

$WarningPreference

スクリプト、コマンドレット、またはプロバイダーによって生成された警告メッセージ ( Write-Warning コマンドレットによって生成されたメッセージなど) に対する PowerShell の応答方法を決定します。

既定では、警告メッセージが表示され、実行が続行されますが、 の $WarningPreference値を変更することでこの動作を変更できます。

変数は$WarningPreference、列挙値 (ActionPreferenceSilentlyContinueStopContinueInquireIgnoreSuspendBreak) のいずれかを受け取ります。

有効な値は次のとおりです。

  • 停止: 警告メッセージとエラー メッセージを表示し、実行を停止します。
  • Inquire: 警告メッセージを表示し、続行するアクセス許可を求めます。
  • 続行: (既定値) 警告メッセージが表示され、実行が続行されます。
  • SilentlyContinue: 警告メッセージは表示されません。 実行を続行します。

コマンドレットの WarningAction 共通パラメーターを使用して、PowerShell が特定のコマンドからの警告にどのように応答するかを決定できます。 詳細については、「about_CommonParameters」を参照してください。

これらの例は、 のさまざまな値 $WarningPreferenceの効果を示しています。 WarningAction パラメーターは、ユーザー設定の値をオーバーライドします。

この例 では、既定値 Continue の効果を示します。

$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.

この例では、 WarningAction パラメーターを値 SilentlyContinue と共に使用して、警告を抑制します。 メッセージは表示されません。

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue

次の使用例は、変数を $WarningPreferenceSilentlyContinue 値に変更します。 メッセージは表示されません。

$WarningPreference = "SilentlyContinue"
$m = "This action can delete data."
Write-Warning -Message $m

この例では、 WarningAction パラメーターを使用して、警告が生成されたときに停止します。

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction Stop
WARNING: This action can delete data.
Write-Warning : The running command stopped because the preference variable
  "WarningPreference" or common parameter is set to Stop:
    This action can delete data.
At line:1 char:1
+ Write-Warning -Message $m -WarningAction Stop

次の使用例は、変数を $WarningPreferenceInquire 値に変更します。 ユーザーに確認を求めるメッセージが表示されます。

$WarningPreference = "Inquire"
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.

Confirm
Continue with this operation?
[Y] Yes  [A] Yes to All  [H] Halt Command  [?] Help (default is "Y"):

この例では、 WarningAction パラメーターを 値 SilentlyContinue と共に使用します。 コマンドは引き続き実行され、メッセージは表示されません。

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue

次の使用例は、値を $WarningPreference Stop に変更 します

$WarningPreference = "Stop"
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.
Write-Warning : The running command stopped because the preference variable
  "WarningPreference" or common parameter is set to Stop:
    This action can delete data.
At line:1 char:1
+ Write-Warning -Message $m

この例では、 WarningActionInquire 値と共に使用します。 警告が発生すると、ユーザーにメッセージが表示されます。

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction Inquire
WARNING: This action can delete data.

Confirm
Continue with this operation?
[Y] Yes  [A] Yes to All  [H] Halt Command  [?] Help (default is "Y"):

$WhatIfPreference

WhatIf をサポートするすべてのコマンドに対して自動的に有効にするかどうかを決定します。 WhatIf が有効になっている場合、コマンドレットはコマンドの予想される効果を報告しますが、コマンドは実行しません。

有効な値は次のとおりです。

  • False (0、無効): (既定) WhatIf が自動的に有効になっていません。 これを手動で有効にするには、コマンドレットの WhatIf パラメーターを使用します。
  • True (1、有効): WhatIf は、それをサポートするすべてのコマンドで自動的に有効になります。 ユーザーは、 WhatIf パラメーターを False の 値と共に使用して、 などの -WhatIf:$false手動で無効にすることができます。

これらの例は、 のさまざまな値 $WhatIfPreferenceの効果を示しています。 WhatIf パラメーターを使用して、特定のコマンドの基本設定値をオーバーライドする方法を示します。

この例では、既定値 False に設定された $WhatIfPreference 変数の効果を示 します。 を使用して Get-ChildItem 、ファイルが存在することを確認します。 Remove-Item はファイルを削除します。 ファイルが削除されたら、 を使用 Get-ChildItemして削除を確認できます。

Get-ChildItem -Path .\test.txt
Remove-Item -Path ./test.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           9/13/2019    10:53             10 test.txt
Get-ChildItem -Path .\test.txt
Get-ChildItem : Cannot find path 'C:\Test\test.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -File test.txt

この例では、 の値が False の場合に WhatIf パラメーターを使用した場合の$WhatIfPreference効果を示します。

ファイルが存在することを確認してください。

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

WhatIf パラメーターを使用して、ファイルを削除しようとした結果を確認します。

Remove-Item -Path .\test2.txt -WhatIf
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".

ファイルが削除されなかったことを確認します。

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

この例では、値 True に設定された$WhatIfPreference変数の効果を示します。 を使用 Remove-Item してファイルを削除すると、ファイルのパスが表示されますが、ファイルは削除されません。

ファイルの削除を試みます。 が実行された場合 Remove-Item の動作に関するメッセージが表示されますが、ファイルは削除されません。

$WhatIfPreference = "True"
Remove-Item -Path .\test2.txt
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".

を使用して Get-ChildItem 、ファイルが削除されなかったことを確認します。

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

この例では、 の $WhatIfPreference 値が True の場合にファイルを削除する方法を示します。 WhatIf パラメーターの値$falseは を使用します。 を使用して Get-ChildItem 、ファイルが削除されたことを確認します。

Remove-Item -Path .\test2.txt -WhatIf:$false
Get-ChildItem -Path .\test2.txt
Get-ChildItem : Cannot find path 'C:\Test\test2.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -Path .\test2.txt

WhatIf をサポートせず、WhatIfStop-ProcessGet-Processサポートするコマンドレットの例を次に示します$WhatIfPreference変数の値は True です

Get-ProcessWhatIf をサポートしていません。 コマンドが実行されると、 Winword プロセスが表示されます。

Get-Process -Name Winword
 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
    130   119.84     173.38       8.39   15024   4 WINWORD

Stop-ProcessWhatIf をサポートしますWinword プロセスは停止されません。

Stop-Process -Name Winword
What if: Performing the operation "Stop-Process" on target "WINWORD (15024)".

WhatIf の動作をStop-Processオーバーライドするには、WhatIf パラメーターの値$falseを に設定します。 Winword プロセスが停止しています。

Stop-Process -Name Winword -WhatIf:$false

Winword プロセスが停止したことを確認するには、 を使用しますGet-Process

Get-Process -Name Winword
Get-Process : Cannot find a process with the name "Winword".
  Verify the process name and call the cmdlet again.
At line:1 char:1
+ Get-Process -Name Winword

関連項目