トピック ユーザー設定変数 簡易説明 Windows PowerShell の動作をカスタマイズする変数 詳細説明 Windows PowerShell には、その動作をカスタマイズするための一連の 変数が用意されています。これらの "ユーザー設定変数" は、GUI ベースのシステムのオプションと同様に機能します。 ユーザー設定変数は、Windows PowerShell の動作環境およびその環境 で実行されるすべてのコマンドに影響します。多くの場合、コマンド レットには、特定のコマンドのユーザー設定動作を上書きするための パラメーターがあります。 ユーザー設定変数およびその既定値の一覧を次の表に示します。 変数 既定値 -------- ------------- $ConfirmPreference High $DebugPreference SilentlyContinue $ErrorActionPreference Continue $ErrorView NormalView $FormatEnumerationLimit 4 $LogCommandHealthEvent False (ログに記録しない) $LogCommandLifecycleEvent False (ログに記録しない) $LogEngineHealthEvent True (ログに記録する) $LogEngineLifecycleEvent True (ログに記録する) $LogProviderLifecycleEvent True (ログに記録する) $LogProviderHealthEvent True (ログに記録する) $MaximumAliasCount 4096 $MaximumDriveCount 4096 $MaximumErrorCount 256 $MaximumFunctionCount 4096 $MaximumHistoryCount 64 $MaximumVariableCount 4096 $OFS (空白文字 (" ")) $OutputEncoding ASCIIEncoding オブジェクト $ProgressPreference Continue $PSEmailServer (なし) $PSSessionApplicationName WSMAN $PSSessionConfigurationName https://schemas.microsoft.com/powershell/microsoft.powershell $PSSessionOption (下記参照) $VerbosePreference SilentlyContinue $WarningPreference Continue $WhatIfPreference 0 また、Windows PowerShell には、ユーザー設定を格納する次の環境変数が含まれ ています。環境変数の詳細については、「about_environment_variables」 を参照してください。 変数 -------- PSModulePath ユーザー設定変数の操作 このドキュメントでは、各ユーザー設定変数について説明します。 特定のユーザー設定変数の現在の値を表示するには、変数の名前を入力します。 応答として、Windows PowerShell によって値が表示されます。たとえば、 $ConfirmPreference 変数の値を表示するには、次のコマンドを入力します。 PS> $ConfirmPreference High 変数の値を変更するには、代入ステートメントを使用します。たとえば、 次のステートメントでは、$ConfirmPreference 変数に "Medium" という値が代入されます。 PS> $ConfirmPreference = "Medium" すべての変数と同様に、設定する値は、現在の Windows PowerShell ウィンドウに固有の 設定です。これらの値をすべての Windows PowerShell ウィンドウで有効にするには、 Windows PowerShell プロファイルに値を追加します。詳細については、「about_profiles」 を参照してください。 リモートでの操作 リモート コンピューター上でコマンドを実行すると、リモート コマンドには、リモート コンピューター上の Windows PowerShell クライアントに設定されているユーザー設定の みが適用されます。たとえば、リモート コマンドを実行すると、リモート コンピューター 上の $DebugPreference 変数の値によって、Windows PowerShell がデバッグ メッセージに どのように応答するかが決まります。 リモート コマンドの詳細については、「about_remote」を参照してください。 $ConfirmPreference ------------------ 実行前に自動的にユーザーに確認を指示するコマンドレット アクションを決定します。 $ConfirmPreference の値 (High、Medium、Low、None) がコマンドレット アクションの リスク (High、Medium、Low、None) 以上である場合、Windows PowerShell はアクションを 実行する前に自動的にユーザーに確認を指示します。 コマンドレットの Confirm パラメーターを使用して、特定のコマンドのユーザー設定を 上書きできます。 有効な値は次のとおりです。 None: すべてのコマンドレット アクションにおいて、自動確認メッセージは表示されません。特定 のコマンドの確認を要求するには、Confirm パラメーターを使用する必要があります。 Low: コマンドレット アクションのリスクが Low、Medium、または High の場合に、自動確認メ ッセージが表示されます。特定のコマンドの確認メッセージが表示されないようにするには、 -Confirm:$false を使用します。 Medium: コマンドレット アクションのリスクが Medium または High の場合に、自動確認メッセージ が表示されます。特定のコマンドの確認メッセージを表示するには、-confirm を使用します。 特定のコマンドの確認メッセージが表示されないようにするには、confirm:$false を使用します。 High (既定): コマンドレット アクションのリスクが High の場合に、自動確認メッセージが表示され ます。特定のコマンドの確認メッセージを表示するには、-confirm を使用します。特定の コマンドの確認メッセージが表示されないようにするには、-confirm:$false を使用します。 詳細説明 コマンドレット アクションがシステムに大きな影響を与える場合 (データの 削除や大量のシステム リソースの使用など)、Windows PowerShell によって アクションを実行する前に自動的に確認メッセージを表示できます。 次に例を示します。 PS> remove-item pref2.txt 確認 この操作を実行しますか? 対象 "C:\pref2.txt" に対して操作 "ファイルの削除" を実行しています。 [Y] はい [A] すべて続行 [N] いいえ [L] すべて無視 [S] 中断 [?] ヘルプ (既定は "Y"): リスクの推定は、"ConfirmImpact" というコマンドレットの一部として行われます。このパラメータ ーを変更することはできません。 システムに危険をもたらす可能性があるコマンドレットには、Confirm パラメーターを指定して、 特定のコマンドの確認を指示させるか、表示されないようにすることができます。 ほとんどのコマンドレットでは、リスクの既定値として Medium が使用されます。 $ConfirmPreference の既定値は High であるので、自動確認メッセージが表示されることは まれです。ただし、$ConfirmPreference の値を Medium または Low に変更することによって、 自動確認メッセージをアクティブ化できます。 例 この例は、$ConfirmPreference の既定値を使用したときの結果を示しています。 値が High の場合、リスクが High のコマンドレットに対してのみ確認メッセー ジが表示されます。ほとんどのアクションのリスクは Medium であるので、 自動確認メッセージは表示されません。ただし、コマンドレットの Confirm パラメーターを使用して、特定のコマンドの確認を指示させることもできます。 PS> $confirmpreference # 変数の現在の値を取得します。 High PS> remove-item temp1.txt # ファイルを削除します。 PS> # 確認なしで削除されます。 PS> remove-item temp2.txt -confirm # Confirm パラメーターを使用します。 確認 この操作を実行しますか? 対象 "C:\temp2.txt" に対して操作 "ファイルの削除" を実行しています。 [Y] はい [A] すべて続行 [N] いいえ [L] すべて無視 [S] 中断 [?] ヘルプ (既定は "Y"): この例は、$ConfirmPrefernce の値を Medium に変更したときの結果を示しています。 ほとんどのコマンドレット アクションのリスクは Medium であるため、自動確認 メッセージが表示されます。特定のコマンドの確認メッセージを表示されないように するには、値を $false に設定して Confirm パラメーターを使用する必要があります。 PS> $confirmpreference = "Medium" # $ConfirmPreference の値を変更します。 PS> remove-item temp2.txt # ファイルを削除すると確認がトリガーされます。 確認 この操作を実行しますか? 対象 "C:\temp2.txt" に対して操作 "ファイルの削除" を実行しています。 [Y] はい [A] すべて続行 [N] いいえ [L] すべて無視 [S] 中断 [?] ヘルプ (既定は "Y"): PS> remove-item temp3.txt -confirm:$false # Confirm パラメーターを使用して確認 メッセージが表示されないようにします。 PS> $DebugPreference ------------------ スクリプト、コマンドレット、プロバイダー、またはコマンドラインの Write-Debug コマンドによって生成されるデバッグ メッセージに対して Windows PowerShell が応答する方法を決定します。 一部のコマンドレットはデバッグ メッセージを表示しますが、これらは通常、 プログラマーおよびテクニカル サポートの専門家を対象とした非常に技術的 なメッセージです。既定では、デバッグ メッセージは表示されませんが、 $DebugPreference の値を変更することによってデバッグ メッセージを表示できます。 コマンドレットの Debug 共通パラメーターを使用して、特定のコマンドの デバッグ メッセージの表示と非表示を切り替えることもできます。詳細について参照する には、「get-help about_commonparameters」と入力してください。 有効な値は次のとおりです。 Stop: デバッグ メッセージを表示し、実行を停止します。 エラーがコンソールに書き込まれます。 Inquire: デバッグ メッセージを表示し、続行するかどうかを確認します。 Continue: デバッグ メッセージを表示し、実行を継続します。 SilentlyContinue (既定): 影響はありません。デバッグ メッセージは表示されず、 中断することなく実行が継続されます。 例 次の例は、コマンドラインに Write-Debug コマンドが入力されている場合に $DebugPreference の値を変更したときの結果を示しています。この変更は、 コマンドレットおよびスクリプトによって生成されるメッセージを含む、すべての デバッグ メッセージに影響します。これらの例は、単一のコマンドに関連するデバッグ メッセージの表示と非表示を Debug 共通パラメーターを使用して切り替える方法も示しています。 この例は、既定値の "SilentlyContinue" を使用したときの結果を示しています。デバッグ メッセージは表示されず、処理が継続されます。最後のコマンドでは、Debug パラメーターを 使用して、単一のコマンドのユーザー設定を上書します。 PS> $debugpreference # の現在の値を取得します。 SilentlyContinue $DebugPreference PS> write-debug "Hello, World" PS> # デバッグ メッセージは表示されません。 PS> write-debug "Hello, World" -Debug # Debug パラメーターを使用します。 DEBUG: Hello, World # デバッグ メッセージが要求されます。 確認 この操作を続行しますか? [Y] はい [A] すべて続行 [H] コマンドの中止 [S] 中断 [?] ヘルプ (既定は "Y"): この例は、"Continue" という値を使用したときの結果を示しています。最後のコマンドでは、 値を $false に設定して Debug パラメーターを使用し、単一のコマンドに関するメッセージが 表示されないようにします。 PS> $debugpreference = "Continue" # 値を "Continue" に変更します。 PS> write-debug "Hello, World" DEBUG: Hello, World # デバッグ メッセージが表示され、 PS> 処理が継続されます。 PS> write-debug "Hello, World" -Debug:$false # false に設定して Debug パラメーターを使用します。 PS> # デバッグ メッセージは表示されません。 この例は、"Stop" という値を使用したときの結果を示しています。 最後のコマンドでは、値を $false に設定して Debug パラメーターを使用し、 単一のコマンドに関するメッセージが表示されないようにします。 PS> $debugpreference = "Stop" # 値を "Stop" に変更します。 PS> write-debug "Hello, World" DEBUG: Hello, World Write-Debug : シェル変数 "DebugPreference" が Stop に設定されたためコマンドが停止しました。 行: 1 文字: 12 + write-debug <<<< "Hello, World" PS> write-debug "Hello, World" -Debug:$false # $false に設定して Debug パラメーターを使用します。 PS> # デバッグ メッセージは表示されず、 処理は停止されません。 この例は、"Inquire" という値を使用したときの結果を示しています。 最後のコマンドでは、値を $false に設定して Debug パラメーターを使用し、 単一のコマンドに関するメッセージが表示されないようにします。 PS> $debugpreference = "Inquire" PS> write-debug "Hello, World" DEBUG: Hello, World 確認 この操作を続行しますか? [Y] はい [A] すべて続行 [H] コマンドの中止 [S] 中断 [?] ヘルプ (既定は "Y"): PS> write-debug "Hello, World" -Debug:$false # $false に設定して Debug パラメーターを使用します。 PS> # デバッグ メッセージは表示されず、 中断することなく処理が継続されます。 $ErrorActionPreference ---------------------- Write-Error コマンドレットによって生成されるエラーなど、コマンドライン、スクリプト、 コマンドレット、またはプロバイダー内で発生した未終了エラー (コマンドレットの処理を中止 しないエラー) に対して Windows PowerShell が応答する方法を決定します。 コマンドレットの ErrorAction 共通パラメーターを使用して、特定のコマンドのユーザー設定 を上書きすることもできます。詳細について参照するには、「get-help about_commonparameters」 と入力してください。 有効な値は次のとおりです。 Stop: エラー メッセージを表示し、実行を停止します。 Inquire: エラー メッセージを表示し、続行するかどうかを確認します。 Continue: エラー メッセージを表示し、実行を継続します。 SilentlyContinue (既定): 影響はありません。エラー メッセージは表示されず、 中断することなく実行が継続されます。 $ErrorActionPreference および ErrorAction 共通パラメーターのどちらも、 Windows PowerShell が終了エラー (コマンドレットの処理を中止するエラー) に応答する方法には影響しません。 ErrorAction 共通パラメーターの詳細について参照するには、 「get-help about_commonparameters」と入力してください。 例 これらの例は、$ErrorActionPreference に異なる値を使用したときの結果、および ErrorAction 共通パラメーターを使用して単一のコマンドのユーザー設定を上書き したときの結果を示しています。ErrorAction パラメーターに有効な値は、 $ErrorActionPreference 変数に有効な値と同じです。 この例は、既定の Continue という値を使用したときの結果を示しています。 PS> $erroractionpreference Continue # ユーザー設定値を表示します。 PS> write-error "Hello, World" # 未終了エラーを生成します。 write-error "Hello, World" : Hello, World # エラー メッセージが表示され、 実行が継続されます。 PS> write-error "Hello, World" -ErrorAction:SilentlyContinue # 値を "SilentlyContinue" に設定して ErrorAction パラメーターを使用します。 PS> # エラー メッセージは表示されず、 実行が継続されます。 この例は、SilentlyContinue という値を使用したときの結果を示しています。 PS> $ErrorActionPreference = "SilentlyContinue" # ユーザー設定値を変更します。 PS> write-error "Hello, World" # エラー メッセージを生成します。 PS> # エラー メッセージは表示されません。 PS> write-error "Hello, World" -erroraction:continue # 値を "Continue" に設定して ErrorAction パラメーターを使用します。 write-error "Hello, World" -erroraction:continue : Hello, World # エラー メッセージが表示され、実行が継続されます。 この例は、実際にエラーが発生したときの結果を示しています。この場合、 コマンドによって、存在しないファイルである nofile.txt が取得されます。 また、ErrorAction 共通パラメーターを使用して、ユーザー設定を上書き します。 PS> $erroractionpreference SilentlyContinue # ユーザー設定値を表示します。 PS> get-childitem -path nofile.txt PS> # エラー メッセージは表示されません。 PS> $ErrorActionPreference = "Continue" # 値を Continue に変更します。 PS> get-childitem -path nofile.txt Get-ChildItem : パス 'C:\nofile.txt' が存在しないため検出できません。 行: 1 文字: 4 + get-childitem <<<< nofile.txt PS> get-childitem -path nofile.txt -erroraction SilentlyContinue # ErrorAction パラメーターを使用します。 PS> # エラー メッセージは表示されません。 PS> $ErrorActionPreference = "Inquire" # 値を Inquire に変更します。 PS> get-childitem -path nofile.txt 確認 パス 'C:\nofile.txt' が存在しないため検出できません。 [Y] はい [A] すべて続行 [H] コマンドの中止 [S] 中断 [?] ヘルプ (既定は "Y"): y Get-ChildItem : パス 'C:\nofile.txt' が存在しないため検出できません。 行: 1 文字: 4 + get-childitem <<<< nofile.txt PS> $ErrorActionPreference = "Continue" # 値を Continue に変更します。 PS> Get-Childitem nofile.txt -erroraction "Inquire" # ErrorAction パラメーターを使用してユーザー 設定値を上書きします。 確認 パス 'C:\nofile.txt' が存在しないため検出できません。[Y] はい [A] すべて続行 [H] コマンドの中止 [S] 中断 [?] ヘルプ (既定は "Y"): $ErrorView ---------- Windows PowerShell でのエラー メッセージの表示形式を決定します。 有効な値は次のとおりです。 NormalView (既定): ほとんどのユーザーを対象とした詳細ビューです。 エラーの説明、エラーに記載されているオブジェクトの 名前、およびエラーの原因になったコマンド内の単語を指 す矢印 (<<<<) で構成されます。 CategoryView: 稼働環境を対象とする簡潔で構造化されたビューです。 {Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason} という形式が使用されます。 CategoryView のフィールドの詳細については、MSDN の「Windows PowerShell SDK」で 「ErrorCategoryInfo Class (ErrorCategoryInfo クラス)」(http://msdn.microsoft.com/ ja-jp/library/system.management.automation.errorcategoryinfo(en-us,VS.85).aspx) を参照してください。 例 これらの例は、ErrorView に異なる値を使用したときの結果を示しています。 この例は、$ErrorView の値が NormalView のときにエラーがどのように表示されるかを示しています。 この場合、存在しないファイルが Get-ChildItem コマンドによって検索されます。 PS> $ErrorView # 値を確認します。 NormalView PS> get-childitem nofile.txt # 存在しないファイルが検索されます。 Get-ChildItem : パス 'C:\nofile.txt' が存在しないため検出できません。 行: 1 文字: 14 + get-childitem <<<< nofile.txt この例は、$ErrorView の値が CategoryView のときに、同じエラーがどのように表示 されるかを示しています。 PS> $ErrorView = "CategoryView" # 値を CategoryView に変更します。 PS> get-childitem nofile.txt オブジェクト未検出: (C:\nofile.txt:String) [Get-ChildItem]、ItemNotFoundException この例は、ErrorView の値がエラー表示にのみ影響することを示しています。$error automatic 変数に格納されているエラー オブジェクトの構造は変更されません。$error 自動変数の詳細に ついては、「about_automatic_variables」を参照してください。 このコマンドは、エラー配列内の最新のエラーに関連付けられた ErrorRecord オブジェクト (要素 0) を取得して、一覧に含まれるエラー オブジェクトのすべてのプロパティを書式設定します。 PS> $error[0] | format-list -property * -force 例外 : System.Management.Automation.ItemNotFoundException: パス 'C:\nofile.txt' が存在しないため検出できません。 System.Management.Automation.SessionStateInternal. GetChildItems(String path, Boolean recurse, CmdletProviderContext context)、at System.Management.Automation.ChildItemCmdletProvider Intrinsics.Get(String path, Boolean recurse, CmdletProviderContext context)、at Microsoft.PowerShell.Commands.GetChildItemCommand.ProcessRecord() : TargetObject : C:\nofile.txt CategoryInfo : オブジェクト未検出: (C:\nofile.txt:String) [Get-ChildItem]、 ItemNotFoundException FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand : ErrorDetails : InvocationInfo : System.Management.Automation.InvocationInfo $FormatEnumerationLimit ----------------------- 表示に含まれる、列挙された項目の数を指定します。この変数は表示にのみ影響し、 基になるオブジェクトには影響しません。$FormatEnumerationLimit の値が列挙された 項目の数より小さい場合、Windows PowerShell は、表示されていない項目があることを 示す省略記号 (...) を追加します。 有効な値: 整数 (Int32) 既定値: 4 例 この例は、$FormatEnumerationLimit 変数を使用して、列挙された項目の表示を改善する方法を示しています。 この例に示すコマンドを使用すると、コンピューター上で実行しているすべてのサービスを、実行中のサ ービスと停止しているサービスの 2 つのグループに分けて一覧表示する表が生成されます。Get-Service コマンドを使用してすべてのサービスを取得し、パイプラインを介して結果を Group-Object コマンドレット に送ります。このコマンドレットは、サービスの状態に基づいて結果をグループ化します。 結果は表形式で、Name 列に状態、Group 列にその状態のプロセスが列挙されます (列のラベルを変更 するには、ハッシュ テーブルを使用します)。詳細については、「get-help format-table -examples」 に示す例を参照してください。 それぞれの状態の Group 列には最大で 4 つのサービスが列挙されます。列挙される項目の数を増加する には、$FormatEnumerationLimit の値を 1000 に増やします。 結果表示では、Group 列の一覧が行の長さで制限されるようになります。例に示す最後のコマンドで は、Format-Table の Wrap パラメーターを使用して、各 Status グループにすべてのプロセスを表示します。 PS> $formatenumerationlimit # 現在の値を検索します。 4 PS> 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...} # 一覧の 4 つ目以降の項目が切り捨てられます。 PS> $formatenumerationlimit = 1000 # 制限値を 1000 に増やします。 PS> 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... PS> get-service | group-object -property status | format-table -wrap # 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, RSVP, SCardSvr, SwPrv, SysmonLog, TlntSvr, upnphost, UPS, VSS, WmdmPmSN, Wmi, WmiApSrv, xmlprov} $Log*Event ---------- Log*Event ユーザー設定変数は、イベント ビューアーの Windows PowerShell イベント ログに書き込まれ るイベントの種類を決定します。既定では、エンジンおよびプロバイダー イベントのみがログに記録され ますが、Log*Event preference 変数を使用して、コマンドに関するイベントのログへの記録など、ログをカス タマイズすることもできます。 Log*Event ユーザー設定変数は次のとおりです。 $LogCommandHealthEvent: コマンドの初期化と処理でのエラーおよび例外をログに記録します。 既定は、$false (ログに記録しない) です。 $LogCommandLifecycleEvent: コマンドやコマンド パイプラインの開始と停止、およびコマンド探索でのセキュリティの 例外をログに記録します。既定は、$false (ログに記録しない) です。 $LogEngineHealthEvent: セッションのエラーおよび障害をログに記録します。既定は、 $true (ログに記録する) です。 $LogEngineLifecycleEvent: セッションの開始と終了をログに記録します。既定は、 $true (ログに記録する) です。 $LogProviderHealthEvent: 読み取りおよび書き込みのエラー、参照エラー、 呼び出しエラーなど、プロバイダーのエラーをログに記録します。既定は、 $true (ログに記録する) です。 $LogProviderLifecycleEvent: Windows PowerShell プロバイダーの追加と削除をログに記録します。 既定は、$true (ログに記録する) です。Windows PowerShell プロバイダーに関する情報を表示 するには、次のように入力します。 get-help about_provider Log*Event を有効にするには、値を $true に設定して変数を入力します。次に例を示します。 $LogCommandLifeCycleEvent - または - $LogCommandLifeCycleEvent = $true イベントの種類を無効にするには、値を $false に設定して変数を入力します。次に例を示します。 $LogCommandLifeCycleEvent = $false 有効にしたイベントは、現在の Windows PowerShell コンソールに対してのみ有効になります。 すべてのコンソールに設定を適用するには、Windows PowerShell プロファイルに変数の設定を保存します。 $MaximumAliasCount ------------------ Windows PowerShell セッションで許可されるエイリアスの数を指定します。 ほとんどの場合には既定値の 4096 で十分ですが、ニーズに合わせて調整できます。 有効な値: 1024 ~ 32768 (Int32) 既定: 4096 システム上のエイリアスの数をカウントするには、次のように入力します。 (get-alias).count $MaximumDriveCount ------------------ 任意のセッションで許可される Windows PowerShell ドライブの数を指定します。これには、 Windows PowerShell プロバイダーによって公開され、Alias: ドライブ、HKLM: ドライブなどの ドライブとして表示されている、ファイル システム ドライブおよびデータ ストアが含まれます。 有効な値: 1024 ~ 32768 (Int32) 既定: 4096 システム上のエイリアスの数をカウントするには、次のように入力します。 (get-psdrive).count $MaximumErrorCount ------------------ セッションのエラー履歴に保存されるエラーの数を指定します。 有効な値: 256 ~ 32768 (Int32) 既定: 256 保持された各エラーを表すオブジェクトは、$Error 自動変数に保存されます。この変数には、エラーご とに 1 つのエラー レコード オブジェクトの配列が含まれています。配列内の最初のオブジェクトが最新 のエラーです ($Error[0])。 システム上のエラーの数をカウントするには、$Error 配列の Count プロパティを使用します。次のよ うに入力します。 $Error.count 特定のエラーを表示するには、配列表記を使用してエラーを表示します。たとえば、最新のエラーを表示するには、 次のように入力します。 $Error[0] 保持された最も古いエラーを表示するには、次のように入力します。 $Error[($Error.Count -1] ErrorRecord オブジェクトのプロパティを表示するには、次のように入力します。 $Error[0] | format-list -property * -force このコマンドにおいて、Force パラメーターは、ErrorRecord オブジェクトの特殊な書式設定を上書きして 通常の書式に戻します。 エラー履歴からすべてのエラーを削除するには、エラー配列の Clear メソッドを使用します。 PS> $Error.count 17 PS> $Error.clear() PS> PS> $Error.count 0 エラー配列のすべてのプロパティおよびメソッドを参照するには、Get-Member コマンドレットを InputObject パラメーターと一緒に使用します。オブジェクトのコレクションを Get-Member にパイプすると、 Get-Member によってコレクション内のオブジェクトのプロパティおよびメソッドが表示されます。Get- Member の InputObject パラメーターを使用すると、Get-Member によってコレクションのプロパティおよ びメソッドが表示されます。 $MaximumFunctionCount ------------------ 任意のセッションで許可される関数の数を指定します。 有効な値: 1024 ~ 32768 (Int32) 既定: 4096 セッション内の関数を表示するには、Windows PowerShell Function プロバイダーによって公開されている Windows PowerShell の Function: ドライブを使用します (Function プロバイダーの詳細について参照するには、 「get-help function」と入力してください)。 現在のセッション内の関数の一覧を表示するには、次のように入力します。 get-childitem function: 現在のセッション内の関数をカウントするには、次のように入力します。 (get-childitem function:).count $MaximumHistoryCount ------------------ 現在のセッションのコマンド履歴に保存されるコマンドの数を指定します。 有効な値: 1 ~ 32768 (Int32) 既定: 64 現在の時点でコマンド履歴に保存されているコマンドの数を確認するには、次のように入力します。 (get-history).count セッション履歴に保存されているコマンドを表示するには、Get-History コマンドレットを使用しま す。詳細について参照するには、「get-help about_history」と入力してください。 $MaximumVariableCount ------------------ 自動変数、ユーザー設定変数、コマンドおよびスクリプトに作成される変数など、 任意のセッションで許可される変数の数を指定します。 有効な値: 1024 ~ 32768 (Int32) 既定: 4096 セッション内の変数を表示するには、Get-Variable コマンドレット、および Windows PowerShell の Variable: ドライブと Windows PowerShell 変数プロバイダーの機能を使用します。 変数プロバイダーの詳細について参照するには、「get-help variable」と入力してください。 システム上の現在の変数の数を調べるには、次のように入力します。 (get-variable).count $OFS ---- 出力フィールド区切り記号です。配列の要素を区切る文字を指定します。この記号は、 配列を文字列に変換するときに使用されます。 有効な値: 任意の文字列 既定: 空白 既定では、$OFS 変数は存在せず出力ファイル区切り記号は空白になっていますが、 この変数を追加して任意の文字列に設定できます。 例 この例は、配列を文字列に変換するときに空白を使用して値を区切る場合を示しています。 この場合、整数の配列が変数に格納され、変数が文字列としてキャストされます。 PS> $array = 1,2,3 # 整数の配列を格納します。 PS> [string]$array # 配列を文字列にキャストします。 1 2 3 # 空白によって要素が区切られます。 区切り記号を変更するには、値を代入した $OFS 変数を追加します。正常に機能するには、 変数の名前が $OFS になっている必要があります。 PS> $OFS = "+" # $OFS を作成して "+" を代入します。 PS> [string]$array # コマンドを繰り返します。 1+2+3 # プラス記号によって要素が区切られます。 既定の動作を復元するには、$OFS の値に空白 (" ") を代入するか、あるいはこの変数を削除します。 このコマンドでは、変数を削除して、セパレーターが空白になっていることを確認します。 PS> Remove-Variable OFS # $OFS を削除します。 PS> PS> [string]$array # コマンドを繰り返します。 1 2 3 # 空白によって要素が区切られます。 $OutputEncoding --------------- テキストを他のアプリケーションに送信するときに Windows PowerShell によって使用される文字エン コードの方法を決定します。たとえば、アプリケーションが Windows PowerShell に Unicode 文字列を返す場合には、値を変更して文字を正しく送信する必要があります。 有効な値: ASCIIEncoding、SBCSCodePageEncoding、UTF7Encoding、UTF8Encoding、UTF32Encoding、 UnicodeEncoding などのエンコーディング クラスから派生するオブジェクト 既定: ASCIIEncoding オブジェクト (System.Text.ASCIIEncoding) 例 この例は、Unicode 文字を使用する言語 (中国語など) にローカライズされたコンピューターの Windows PowerShell で Windows の FindStr コマンドを動作させる方法を示しています。 最初のコマンドでは、$OutputEncoding の値を検索します。値はエンコーディング オブジェクトである ため、EncodingName プロパティのみを表示します。 PS> $OutputEncoding.EncodingName # 現在の値を検索します。 US-ASCII この例では、FindStr コマンドを使用して、Test.txt ファイルに含まれる 2 つの漢字を検索します。この FindStr コマンドが Windows コマンド プロンプト (Cmd.exe) で実行されると、FindStr によってテキスト ファ イル内の文字が検索されます。ただし、Windows PowerShell で同じ FindSrt コマンドを実行すると、Windows PowerShell は Unicode テキストではなく ASCII テキストを FindSrt コマンドに送信するため、文字は見つかりません。 PS> findstr <Unicode-characters> # FindStr を使用して検索します。 PS> # 見つかりません。 Windows PowerShell でコマンドが動作するようにするには、$OutputEncoding の値を、Windows で選択されてい るロケールに基づくコンソールの OutputEncoding プロパティの値に設定します。OutputEncoding はコンソール の静的プロパティであるため、コマンドにダブルコロン文字 (::) を使用します。 PS> $OutputEncoding = [console]::outputencoding PS> # 値をコンソールの OutputEncoding プロパティと同じ値に 設定します。 PS> $OutputEncoding.EncodingName OEM United States # 結果として得られる値を調べます。 この変更の結果として、FindSrt コマンドによって文字が検索されます。 PS> findstr <Unicode-characters> test.txt: <Unicode-characters> # FindStr を使用して検索します。テキスト ファイル内の文字が検索されます。 $ProgressPreference ------------------- Write-Progress コマンドレットによって生成される進行状況バーなど、スクリプト、コマンドレット、ま たはプロバイダーによって生成される進捗状況の更新に対して Windows PowerShell が応答する方法を決定し ます。Write-Progress コマンドレットは、コマンドの状態を表す進捗状況バーを作成します。 有効な値は次のとおりです。 Stop: 進捗状況バーを表示しません。代わりにエラー メッセージを表示し、 実行を停止します。 Inquire: 進捗状況バーを表示しません。続行の許可を要求します。Y または A と答えると、進捗状況バーが表示されます。 Continue (既定): 進捗状況バーを表示し、実行を継続します。 SilentlyContinue: コマンドが実行されますが、進行状況バーは表示されません。 $PSEmailServer -------------- 電子メール メッセージを送信する既定の電子メール サーバーを指定します。このユーザー設定変数は、 Send-MailMessage コマンドレットなど、電子メールを送信するコマンドレットによって使用されます。 $PSSessionApplicationName --------------------------- WS-Management 技術を使用するリモート コマンドの既定のアプリケーション名を指定します。 システムの既定のアプリケーション名は WSMAN ですが、このユーザー設定変数を使用して既定を変更す ることができます。 アプリケーション名は、接続 URI の最後のノードです。たとえば、次のサンプル URI でのアプリケーシ ョン名は、WSMAN です。 http://Server01:8080/WSMAN リモート コマンドによって接続 URI またはアプリケーション名が指定されない場合には、既定のアプリケ ーション名が使用されます。 WinRM サービスは、アプリケーション名を使用して接続要求を処理するリスナーを選択します。このパラ メーターの値は、リモート コンピューター上のリスナーの URLPrefix プロパティーの値と一致する必要があ ります。 システムの既定およびこの変数の値を上書きして、特定のセッションに別のアプリケーション名を選択するには、 New-PSSession、Enter-PSSession、または Invoke-Command コマンドレットの ConnectionURI パラメーターまたは ApplicationName パラメーターを使用します。 このユーザー設定変数はローカル コンピューター上で設定されますが、リモート コンピューター上のリス ナーを指定します。指定したアプリケーション名がリモート コンピューター上に存在しない場合、セッショ ンを確立するコマンドが失敗します。 $PSSessionConfigurationName --------------------------- 現在のセッションに作成された PSSessions に使用する既定のセッション構成を指定します。 このユーザー設定変数はローカル コンピューター上で設定されますが、リモート コンピューター上のセッション構成を指定します。 $PSSessionConfigurationName 変数の値は、完全修飾リソース URI です。 既定値は次のとおりです。 https://schemas.microsoft.com/powershell/microsoft.powershell これは、リモート コンピューター上での Microsoft.PowerShell セッションの構成を示します。 構成名のみを指定すると、次のスキーマ URI が付加されます。 https://schemas.microsoft.com/powershell/ New-PSSession、Enter-PSSession、または Invoke-Command コマンドレットの ConfigurationName パラメーターを使用すると、既定を上書きし、特定のセッションに別のセッション構成を選択 できます。 この変数の値はいつでも変更できます。この変数の値を変更する場合、選択するセッション構成がリモート コンピューター上に存在している必要があるという点に注意してください。存在しない場合、そのセッショ ン構成を使用してセッションを作成するコマンドは失敗します。 リモート ユーザーがこのコンピューターに接続するセッションを作成する際に使用されるローカル セッシ ョン構成は、このユーザー設定変数では決定できません。ただし、ローカル セッション構成に対する許可を 使用すると、これらのセッション構成を使用できるユーザーを決定できます。 $PSSessionOption ---------------- リモート セッションにおける、詳しい知識のあるユーザー向けのオプションの既定値を設定します。これ らのオプションのユーザー設定は、セッション オプションに対するシステムの既定値を上書きします。 New-PSSession、Enter-PSSession、Invoke-Command など、セッションを作成するコマンドレッ トの SessionOption パラメーターを使用すると、特定のリモート セッションにカスタム オプションを設定 することもできます。SessionOption パラメーターの値は、システムの既定およびこの変数に設定されている 既定よりも優先されます。 $PSSessionOption 変数には、PSSessionOption オブジェクトが含まれています (System.Management.Automation.Remoting.PSSessionObject)。オブジェクトの各プロパティは、 セッションのオプションを表します。たとえば、NoCompression プロパティは、セッション中に 行われるデータ圧縮の有効と無効を切り替えます。 $PSSessionOption ユーザー設定変数を作成するには、New-PSSessionOption コマンドレットを使用します。 $PSSessionOption という変数に出力を保存します。 次に例を示します。 $PSSessionOption = New-PSSessionOption -NoCompression すべての Windows PowerShell セッションで $PSSessionOption ユーザー設定変数を使用 するには、Windows PowerShell プロファイルに、$PSSessionOption 変数を作成する New-PSSessionOption コマンドを追加します。 New-PSSessionOption コマンドレットの詳細については、New-PSSessionOption のヘルプ トピッ クを参照してください。リモート コマンドおよびリモートセッションの詳細については、 「about_Remote」および「about_PSSessions」を参照してください。プロファイルを使用 する方法の詳細については、「about_Profiles」を参照してください。 $VerbosePreference ------------------ Write-Verbose コマンドレットによって生成されるメッセージなど、スクリプト、コマンドレッ ト、またはプロバイダーによって生成される詳細メッセージに対して Windows PowerShell が応答する方法を 決定します。通常、詳細メッセージでは、コマンドを実行するためのアクションについて記述されています。 既定では詳細メッセージは表示されませんが、$VerbosePreference の値を変更することによってこの動作を 変更できます。 コマンドレットの Verbose 共通パラメーターを使用して、特定のコマンドの詳細メッセージの表示と非表 示を切り替えることもできます。詳細について参照するには、「get-help about_commonparameters」 と入力してください。 有効な値は次のとおりです。 Stop: 詳細メッセージおよびエラー メッセージを表示し、実行を停止します。 Inquire: 詳細メッセージを表示し、続行するかどうかを確認するプロンプトを表 示します。 Continue: 詳細メッセージを表示し、実行を継続します。 SilentlyContinue (既定): 詳細メッセージを表示しません。実行を継続します。 例 これらの例は、$VerbosePreference に異なる値を使用したときの結果、および Verbose 共通パラメーター を使用してユーザー設定値を上書きしたときの結果を示しています。 この例は、既定の SilentlyContinue という値を使用したときの結果を示しています。 PS> $VerbosePreference # 現在の値を検索します。 SilentlyContinue PS> Write-Verbose "Verbose message test." PS> # 詳細メッセージを書き込みます。 # メッセージは表示されません。 PS> Write-Verbose "Verbose message test."-verbose VERBOSE: Verbose message test. # Verbose パラメーターを使用します。 この例は、Continue という値を使用したときの結果を示しています。 PS> $VerbosePreference = "Continue" # 値を Continue に変更します。 PS> Write-Verbose "Verbose message test." # 詳細メッセージを書き込みます。 VERBOSE: Verbose message test. # メッセージが表示されます。 PS> Write-Verbose "Verbose message test."-verbose:$false # 値を $false に設定して Verbose パラメーターを使用します。 PS> # メッセージは表示されません。 この例は、Stop という値を使用したときの結果を示しています。 PS> $VerbosePreference = "Stop" # 値を Stop に変更します。 PS> Write-Verbose "Verbose message test." # 詳細メッセージを書き込みます。 VERBOSE: Verbose message test. Write-Verbose : シェル変数 "VerbosePreference" が Stop に設定されたためコマンドが停止 しました。 行: 1 文字: 14 + Write-Verbose <<<< "Verbose message test." PS> Write-Verbose "Verbose message test."-verbose:$false # 値を $false に設定して Verbose パラメーターを使用します。 PS> # メッセージは表示されません。 この例は、Inquire という値を使用したときの結果を示しています。 PS> $VerbosePreference = "Inquire" # 値を Inquire に変更します。 PS> Write-Verbose "Verbose message test." VERBOSE: Verbose message test. # 詳細メッセージを書き込みます。 確認 この操作を続行しますか? [Y] はい [A] すべて続行 [H] コマンドの中止 [S] 中断 [?] ヘルプ (既定は "Y"): y PS> Write-Verbose "Verbose message test."-verbose:$false # Verbose パラメーターを使用します。 PS> # メッセージは表示されません。 $WarningPreference ------------------ Write-Warning コマンドレットによって生成されるメッセージなど、スクリプト、コマンドレット、ま たはプロバイダーによって生成される警告メッセージに対して Windows PowerShell が応答する方法を決定 します。 既定では、警告メッセージが表示されて実行が継続されますが、$WarningPreference の値を変更することに よってこの動作を変更できます。 コマンドレットの WarningAction 共通パラメーターを使用して、Windows PowerShell が特定のコマンドか らの警告に応答する方法を決定することもできます。詳細について参照するには、「get-help about_commonparameters」と入力してください。 有効な値は次のとおりです。 Stop: 警告メッセージおよびエラー メッセージを表示し、実行を停止します。 Inquire: 警告メッセージを表示し、続行の許可を要求します。 Continue (既定): 警告メッセージを表示し、実行を継続します。 SilentlyContinue: 警告メッセージを表示しません。実行を継続します。 例 これらの例は、$WarningPreference の異なる値を使用したときの結果、および WarningAction 共通パラメーター を使用して設定値を上書きしたときの結果を示しています。 この例は、既定の Continue という値を使用したときの結果を示しています。 PS> $WarningPreference # 現在の値を検索します。 Continue # 警告メッセージを書き込みます。 PS> Write-Warning "この操作によってデータが削除されます。" 警告: この操作によってデータが削除されます。 # WarningAction パラメーターを使用して、 # このコマンドの警告が表示されないようにします。 PS> Write-Warning "この操作によってデータが削除されます。" -warningaction silentlycontinue この例は、SilentlyContinue という値を使用したときの結果を示しています。 PS> $WarningPreference = "SilentlyContinue" # 値を SilentlyContinue に変更します。 PS> Write-Warning "この操作によってデータが削除されます。" PS> # 警告メッセージを書き込みます。 PS> Write-Warning "この操作によってデータが削除されます。" -warningaction stop # WarningAction パラメーターを使用して、 # このコマンドによって警告が生成されるときに # 処理を停止します。 警告: この操作によってデータが削除されます。 Write-Warning : シェル変数 "WarningPreference" が Stop に設定されたためコマンドが 停止しました。 行: 1 文字: 14 + Write-Warning <<<< "この操作によってデータが削除されます。"-warningaction stop この例は、Inquire という値を使用したときの結果を示しています。 PS> $WarningPreference = "Inquire" # 値を Inquire に変更します。 PS> Write-Warning "この操作によってデータが削除されます。" # 警告メッセージを書き込みます。 警告: この操作によってデータが削除されます。 確認 この操作を続行しますか? [Y] はい [A] すべて続行 [H] コマンドの中止 [S] 中断 [?] ヘルプ (既定は "Y"): y PS> PS> Write-Warning "この操作によってデータが削除されます。" -warningaction silentlycontinue PS> # WarningAction パラメーターを使用して、 # 現在のコマンドに対する警告への応答を変更します。 この例は、Stop という値を使用したときの結果を示しています。 PS> $WarningPreference = "Stop" # 値を Stop に変更します。 PS> Write-Warning "この操作によってデータが削除されます。" # 警告メッセージを書き込みます。 警告: この操作によってデータが削除されます。 Write-Warning : シェル変数 "WarningPreference" が Stop に設定されたためコマンドが停 止しました。 行: 1 文字: 14 + Write-Warning <<<< "この操作によってデータが削除されます。" PS> Write-Warning "この操作によってデータが削除されます。"-warningaction inquire 警告: この操作によってデータが削除されます。 確認 この操作を続行しますか? [Y] はい [A] すべて続行 [H] コマンドの中止 [S] 中断 [?] ヘルプ (既定は "Y"): # WarningAction パラメーターを使用して、 # 現在のコマンドに対する警告への応答を変更します。 $WhatIfPreference ------------------ WhatIf をサポートするすべてのコマンドに対して WhatIf が自動的に有効になるかどうかを決定しま す。WhatIf が有効になると、コマンドレットによってコマンドの予想結果が報告されますが、コマンドは実 行されません。 有効な値は次のとおりです。 0: WhatIf は自動的には有効になりません。手動で有効にするには、 (既定) コマンドの WhatIf パラメーターを使用します。 1: WhatIf をサポートするコマンドで WhatIf が自動的に有効になります。 WhatIf を手動で無効にするには、値を false に設定して WhatIf コマンドを使 用します (WhatIf:$false)。 詳細説明 コマンドレットが WhatIf をサポートしている場合、コマンドが実行される代わりに、コマンドレットに よってコマンドの予想結果が報告されます。たとえば、Windows PowerShell は、Remove-Item コマンドに 応答して test.txt ファイルを削除する代わりに、何が削除されるかを報告します。その後、Get-Childitem コマンドを実行することで、ファイルが削除されていないことを確認します。 PS> remove-item test.txt What if: 対象 "Item: C:\test.txt" に対して操作 "Remove-Item" を実行しています。 PS> get-childitem test.txt ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C: Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 7/29/2006 7:15 PM 84 test.txt 例 これらの例は、$WhatIfPreference の異なる値を使用したときの結果を示しています。また、WhatIf コマンドレ ットを使用して、特定のコマンドのユーザー設定値を上書きする方法も示しています。 この例は、既定の 0 (有効にしない) という値を使用したときの結果を示しています。 PS> $whatifpreference 0 # 現在の値を確認します。 PS> get-childitem test.txt | format-list FullName FullName : C:\test.txt # ファイルが存在することを確認します。 PS> remove-item test.txt PS> # ファイルを削除します。 PS> get-childitem test.txt | format-list -property FullName # ファイルが削除されていることを確認します。 Get-ChildItem: パス 'C:\test.txt' が存在しないため検出できません。 行: 1 文字: 14 + get-childitem <<<< test.txt | format-list fullname この例は、$WhatIfPreference の値が 0 の場合に WhatIf パラメーターを使用したときの結果を示しています。 PS> get-childitem test2.txt | format-list -property FullName FullName : C:\test2.txt # ファイルが存在することを確認します。 PS> remove-item test2.txt -whatif WhatIf: 対象 "C:\test2.txt" に対して操作 "ファイルの削除" を実行しています。 # WhatIf パラメーターを使用します。 PS> get-childitem test2.txt | format-list -property FullName FullName : C:\test2.txt # ファイルが削除されていないことを確認します。 この例は、1 (WhatIf が有効) という値を使用したときの結果を示しています。コマンドレットを削除する Remove-Item を使用すると、Remove-Item によって削除されるファイルへのパスが表示されますが、ファイ ルは削除されません。 PS> $whatifpreference = 1 PS> $whatifpreference 1 # 値を変更します。 PS> remove-item test.txt WhatIf: 対象 "C:\test.txt" に対して操作 "ファイルの削除" を実行しています。 # ファイルの削除を試みます。 PS> get-childitem test.txt | format-list FullName FullName : C:\test.txt # ファイルが存在することを確認します。 この例は、$WhatIfPreference の値が 1 である場合にファイルを削除する方法を示しています。 値を $false に設定して WhatIf パラメーターを使用します。 PS> remove-item test.txt -whatif:$false # $false に設定して WhatIf パラメーターを使用します。 この例は、WhatIf の動作をサポートするコマンドレットとサポートしないコマンドレットがあることを示して います。この例では、$WhatIfPreference の値が 1 (有効) になっています。Get-Process を実行すると、こ のコマンドは WhatIf をサポートしませんが、Stop-Process コマンドで WhatIf の動作が実行されます。 値を $false に設定して WhatIf パラメーターを使用することで、Stop-Process コマンドの WhatIf の動作を 上書きできます。 PS> $whatifpreference = 1 # 値を 1 に変更します。 PS> get-process winword # Get-Process コマンドが完了します。 Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 234 8 6324 15060 154 0.36 2312 WINWORD PS> stop-process -name winword What if: 対象 "WINWORD (2312)" に対して操作 "Stop-Process" を実行しています。 # Stop-Process コマンドによって WhatIf が使用されます。 PS> stop-process -name winword -whatif:$false PS> # WhatIf:$false によって設定値が上書きされます。 PS> get-process winword Get-Process: 名前 'winword' のプロセスが見つかりません。プロセス名を確認し、コマンドレ ットを再度呼び出してください。 行: 1 文字: 12 + get-process <<<< winword # プロセスが停止していることを確認します。 関連項目 about_Automatic_Variables about_CommonParameters about_Environment_Variables about_Profiles about_Remote about_Scopes about_Variables