次の方法で共有


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 (ログに記録)
$LogProviderHealthEvent $true (ログに記録)
$LogProviderLifecycleEvent $true (ログに記録)
$MaximumHistoryCount 4096
$OFS スペース文字 (" ")
$OutputEncoding UTF8Encoding オブジェクト
$ProgressPreference Continue
$PSDefaultParameterValues @{} (空のハッシュ テーブル)
$PSEmailServer $null (なし)
$PSModuleAutoLoadingPreference All
$PSNativeCommandArgumentPassing WindowsWindows では、Windows 以外の場合はStandard
$PSNativeCommandUseErrorActionPreference $false
$PSSessionApplicationName 'wsman'
$PSSessionConfigurationName 'http://schemas.microsoft.com/powershell/Microsoft.PowerShell'
$PSSessionOption PSSessionOption オブジェクト
$PSStyle PSStyle オブジェクト
$Transcript $null (なし)
$VerbosePreference SilentlyContinue
$WarningPreference Continue
$WhatIfPreference $false

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

  • $env:PSExecutionPolicyPreference
  • $env:PSModulePath

Note

基本設定変数の変更は、行われたスコープとその子スコープにのみ適用されます。 たとえば、基本設定変数を 1 つの関数またはスクリプトに変更する効果を制限できます。 詳細については、「 about_Scopes」を参照してください。

基本設定変数の操作

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

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

 $ConfirmPreference
High

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

$ConfirmPreference = "Medium"

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

リモートでの作業

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

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

$ConfirmPreference

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

$ConfirmPreference変数は、HighMediumLow、または None のいずれかのConfirmImpact列挙値を受け取ります。

コマンドレットと関数には、 HighMedium、または Low のリスクが割り当てられます。 $ConfirmPreference変数の値がコマンドレットまたは関数に割り当てられたリスク以下の場合、コマンドレットまたは関数を実行する前に、PowerShell によって確認が自動的に求められます。 コマンドレットまたは関数にリスクを割り当てる方法の詳細については、 about_Functions_CmdletBindingAttributeを参照してください。

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

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

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

$ConfirmPreferenceの有効な値:

  • なし: PowerShell は自動的にプロンプトを表示しません。 特定のコマンドの確認を要求するには、コマンドレットまたは関数の Confirm パラメーターを使用します。
  • : 低、中、または高リスクのコマンドレットまたは関数を実行する前に、PowerShell によって確認が求められます。
  • : 中または高リスクのコマンドレットまたは関数を実行する前に、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 と呼ばれるコマンドレットまたは関数の属性です。 ユーザーはそれを変更できません。

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

ほとんどのコマンドレットと関数は、ConfirmImpact の既定値である Medium を保持します。 $ConfirmPreference は既定で High に設定されています。 そのため、ユーザーが Confirm パラメーターを指定しない場合、コマンドで確認を求めるメッセージが自動的に表示されることはまれです。 より多くのコマンドレットと関数に対する自動確認プロンプトを拡張するには、 $ConfirmPreference の値を Medium または Low に設定します。

この例では、 $ConfirmPreference 変数の既定値である High の効果を示します。 High値は、危険度の高いコマンドレットと関数のみを確認します。 ほとんどのコマンドレットと関数はリスクが中程度であるため、自動的に確認されず、ファイル 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"):

次の例は、 $ConfirmPreference の値を Medium に変更した結果を示しています。 ほとんどのコマンドレットと関数はリスクが中程度であるため、自動的に確認されます。 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変数は、SilentlyContinueStopContinueInquireIgnoreSuspend、またはBreakのいずれかのActionPreference列挙値を受け取ります。

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

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

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

  • 中断 - エラーが発生したとき、または例外が発生したときにデバッガーを入力します。
  • 停止: デバッグ メッセージを表示し、実行を停止します。 コンソールにエラーを書き込みます。
  • Inquire: デバッグ メッセージを表示し、続行するかどうかを確認します。
  • 続行: デバッグ メッセージを表示し、実行を続行します。
  • SilentlyContinue: (既定値) 効果はありません。 デバッグ メッセージは表示されず、中断することなく実行が続行されます。

Debug共通パラメーターをコマンドに追加すると、デバッグ メッセージを生成するようにコマンドが構成されると、$DebugPreference変数の値が Continue に変更されます。

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

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

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

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

$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

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

$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変数は、SilentlyContinueStopContinueInquireIgnoreSuspend、またはBreakのいずれかのActionPreference列挙値を受け取ります。

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

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

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

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

多くのネイティブ コマンドでは、追加情報の代替ストリームとして stderr に書き込みが行われます。 この動作により、エラーを探すときに混乱が生じる可能性があります。または、$ErrorActionPreference が出力をミュートする状態に設定されている場合は、ユーザーに対する追加の出力情報が失われる可能性があります。

PowerShell 7.2 以降では、リダイレクト演算子 (2>&1) を使用する場合など、ネイティブ コマンドからリダイレクトされたエラー レコードは $Error 変数に書き込まれず、ユーザー設定変数 $ErrorActionPreference はリダイレクトされた出力に影響しません。

PowerShell 7.3 では、 stderr に書き込まれたメッセージの処理方法を制御できる試験的な機能が追加されました。

詳細については、 $PSNativeCommandUseErrorActionPreferenceを参照してください。

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

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

# 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

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

# 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"):

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

# 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 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 でのエラー メッセージの表示形式を決定します。

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

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

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

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

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

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

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

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

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

Get-ChildItem -path 'C:\NoRealDirectory'
Get-ChildItem: Can't find path 'C:\NoRealDirectory' because it doesn't exist.

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

./Script.ps1
Get-Item: C:\Script.ps1
Line |
  11 | Get-Item -Path .\stuff
     | ^ Can't find path 'C:\demo\stuff' because it doesn't exist.

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

Get-ChildItem -Path C:\nofile.txt
Get-ChildItem : Can't find path 'C:\nofile.txt' because it doesn't 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を参照してください。

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

$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 つは stopped サービス) で一覧表示するテーブルを生成します。 Get-Service コマンドを使用してすべてのサービスを取得し、パイプラインを介して結果を Group-Object コマンドレットに送信し、結果をサービスの状態別にグループ化します。

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

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

$FormatEnumerationLimit
4

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

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 に増やします。 Get-ServiceGroup-Objectを使用してサービスを表示します。

$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変数は、SilentlyContinueStopContinueInquireIgnoreSuspend、またはBreakのいずれかのActionPreference列挙値を受け取ります。

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

  • 中断 - 情報ストリームに書き込むときにデバッガーを入力します。
  • 停止: Write-Information コマンドが発生した時点で、コマンドまたはスクリプトを停止します。
  • Inquire: Write-Information コマンドで指定した情報メッセージを表示し、続行するかどうかを確認します。
  • 続行: 情報メッセージを表示し、実行を続行します。
  • 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の値を変更できます。

Note

スクリプト、モジュール、または構成の出力でスペース (" ") の既定値が必要な場合は、 $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 で使用される文字エンコード方法を決定します。

Note

ほとんどのシナリオでは、 $OutputEncoding の値は [Console]::InputEncodingの値に合わせる必要があります。

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

Default: UTF8Encoding オブジェクト。

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

$OutputEncoding.EncodingName

残りの例では、 hexdump.ps1 として保存された次の PowerShell スクリプトを使用して、 $OutputEncodingの動作を示します。

$inputStream = [Console]::OpenStandardInput()
try {
    $buffer = [byte[]]::new(1024)
    $read = $inputStream.Read($buffer, 0, $buffer.Length)
    Format-Hex -InputObject $buffer -Count $read
} finally {
    $inputStream.Dispose()
}

次の例は、上で作成したhexdump.ps1にパイプ処理するときに、文字列値caféがバイトにエンコードされる方法を示しています。 文字列値が UTF8Encoding スキームを使用してエンコードされていることを示します。

'café' | pwsh -File ./hexdump.ps1
   Label: Byte[] (System.Byte[]) <28873E25>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 63 61 66 C3 A9 0D 0A                            caf�

次の例は、エンコードを UnicodeEncoding に変更するときのバイト数の変化を示しています。

$OutputEncoding = [System.Text.Encoding]::Unicode
'café' | pwsh -File ./hexdump.ps1
   Label: Byte[] (System.Byte[]) <515A7DC3>

          Offset Bytes                                           Ascii
                 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
          ------ ----------------------------------------------- -----
0000000000000000 FF FE 63 00 61 00 66 00 E9 00 0D 00 0A 00       ÿþc a f é � �

$ProgressPreference

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

$ProgressPreference変数は、SilentlyContinueStopContinueInquireIgnoreSuspend、またはBreakのいずれかのActionPreference列挙値を受け取ります。

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

  • 中断 - Progress ストリームに書き込むときにデバッガーを入力します。
  • 停止: 進行状況バーは表示されません。 代わりに、エラー メッセージが表示され、実行が停止されます。
  • [照会: 進行状況バーが表示されません。 続行するアクセス許可を求めるメッセージが表示されます。 YまたはAで返信すると、進行状況バーが表示されます。
  • 続行: (既定値) 進行状況バーが表示され、実行が続行されます。
  • SilentlyContinue: コマンドを実行しますが、進行状況バーは表示されません。

$PSDefaultParameterValues

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

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

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

$PSEmailServer

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

$PSModuleAutoloadingPreference

セッション内のモジュールの自動インポートを有効または無効にします。 $PSModuleAutoloadingPreference変数は既定では存在しません。 変数が定義されていない場合の既定の動作は、 $PSModuleAutoloadingPreference = 'All'と同じです。

モジュールを自動的にインポートするには、モジュールに含まれているコマンドを取得または使用します。

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

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

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

$PSNativeCommandArgumentPassing

PowerShell 7.3 では、ネイティブ コマンドのコマンド ラインの解析方法が変更されました。 この動作は、新しい $PSNativeCommandArgumentPassing ユーザー設定変数によって制御されます。

注意事項

新しい動作は、前の動作の大きな変化です。 これにより、ネイティブ アプリケーションを呼び出す際のさまざまな問題に対処するスクリプトと自動化が中断される場合があります。

自動変数 $PSNativeCommandArgumentPassing を使用すると、実行時に動作を選択できます。 有効な値は、LegacyStandardWindows です。 Legacy は過去の動作です。

$PSNativeCommandArgumentPassing変数は既定で定義されますが、値はプラットフォーム固有です。

  • Windows では、基本設定は Windows に設定されます。
  • Windows 以外のプラットフォームでは、基本設定は Standard に設定されます。
  • $PSNativeCommandArgumentPassing変数を削除した場合、PowerShell ではStandard動作が使用されます。

Windows モードとStandard モードの動作は同じですが、Windows モードでは、PowerShell では、次のファイルを実行するときに引数渡しのLegacy動作が使用されます。

  • cmd.exe
  • cscript.exe
  • find.exe
  • sqlcmd.exe
  • wscript.exe
  • ファイルの末尾は次のとおりです。
    • .bat
    • .cmd
    • .js
    • .vbs
    • .wsf

$PSNativeCommandArgumentPassingLegacy または Standard のいずれかに設定されている場合、パーサーはこれらのファイルのチェックは行いません。 新しい動作の例については、「 about_Parsing」を参照してください。

PowerShell 7.3 では、ネイティブ コマンドのパラメーター バインドをトレースする機能も追加されました。 詳しくは、「トレース-コマンド」をご覧ください。

$PSNativeCommandUseErrorActionPreference

$PSNativeCommandUseErrorActionPreference$trueされると、0 以外の終了コードを持つネイティブ コマンドは、$ErrorActionPreferenceに従ってエラーを発行します。

robocopy などの一部のネイティブ コマンドではエラー以外の情報を表すために 0 以外の終了コードを使用します。 このような場合は、動作を一時的に無効にし、0 以外の終了コードがエラーを発行しないようにすることができます。

& {
    # Disable $PSNativeCommandUseErrorActionPreference for this scriptblock
    $PSNativeCommandUseErrorActionPreference = $false
    robocopy.exe D:\reports\operational "\\reporting\ops" CY2022Q4.md
    if ($LASTEXITCODE -gt 8) {
        throw "robocopy failed with exit code $LASTEXITCODE"
    }
}

この例では、 $PSNativeCommandUseErrorActionPreference 変数は scriptblock 内で変更されます。 変更は scriptblock に対してローカルです。 scriptblock が終了すると、変数は以前の値に戻ります。

$PSSessionApplicationName

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

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

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

http://Server01:8080/WSMAN

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

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

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

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

$PSSessionConfigurationName

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

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

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

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

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

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

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

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

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

$PSSessionOption

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

$PSSessionOption変数には、PSSessionOption オブジェクトが含まれています。 詳細については、「 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 基本設定変数を使用するには、$PSSessionOption変数を作成する New-PSSessionOption コマンドを PowerShell プロファイルに追加します。 詳細については、「about_Profiles」を参照してください。

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

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

$PSStyle

PowerShell 7.2 以降では、 $PSStyle 自動変数にアクセスして、ANSI 文字列出力のレンダリングを表示および変更できるようになりました。 $PSStyle は、 PSStyle クラスのインスタンスです。 このクラスのメンバーは、ターミナル内のテキストのレンダリングを制御する ANSI エスケープ シーケンスを含む文字列を定義します。

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

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

Background および Foreground メンバーには、24 ビットカラーを指定するFromRgb()メソッドもあります。

$PSStyle について詳しくは、「about_ANSI_Terminals」を参照してください。

$Transcript

トランスクリプト ファイルの名前と場所を指定するために、 Start-Transcript によって使用されます。 Path パラメーターの値を指定しない場合、Start-Transcript$Transcriptグローバル変数の値のパスを使用します。 この変数を作成していない場合、 Start-Transcript は、既定の名前を使用して次の場所にトランスクリプトを格納します。

  • Windows の場合: $HOME\Documents
  • Linux または macOS の場合: $HOME

既定のファイル名は PowerShell_transcript.<computername>.<random>.<timestamp>.txt です。

$VerbosePreference

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

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

$VerbosePreference変数は、SilentlyContinueStopContinueInquireIgnoreSuspend、またはBreakのいずれかのActionPreference列挙値を受け取ります。

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

  • 中断 - 詳細ストリームに書き込むときにデバッガーを入力します。
  • 停止: 詳細メッセージとエラー メッセージを表示し、実行を停止します。
  • Inquire: 詳細メッセージを表示し、続行するかどうかを確認するプロンプトを表示します。
  • 続行: 詳細メッセージを表示し、実行を続行します。
  • SilentlyContinue: (既定値) 詳細メッセージは表示されません。 実行を続行します。

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

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

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

Write-Verbose -Message "Verbose message test."

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

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

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

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

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

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

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

$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."

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

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

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

$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変数は、SilentlyContinueStopContinueInquireIgnoreSuspend、またはBreakのいずれかのActionPreference列挙値を受け取ります。

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

  • 中断 - 警告メッセージが書き込まれるときにデバッガーを入力します。
  • 停止: 警告メッセージとエラー メッセージを表示し、実行を停止します。
  • 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

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

$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

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

$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

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

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

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 のときにファイルを削除する方法を示します。 値が $falseWhatIf パラメーターを使用します。 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をサポートしていないGet-Process コマンドレットと、WhatIfをサポートするStop-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-Process では、 WhatIf がサポートされています。 Winword プロセスは停止しません。

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

Stop-Process WhatIfの動作をオーバーライドするには、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

関連項目