トピック about_Automatic_Variables 簡易説明 Windows PowerShell の状態情報を格納する変数について説明します。 これらの変数は、Windows PowerShell によって作成され、保持されます。 詳細説明 次の一覧は、Windows PowerShell の自動変数を示します。 $$ セッションが受け取った最後の行にある最後のトークンを格納します。 $? 最後の演算の実行状態を格納します。最後の演算が成功した場合は TRUE、失敗した場合は FALSE を格納します。 $^ セッションが受け取った最後の行にある最初のトークンを格納します。 $_ パイプライン オブジェクトの現在のオブジェクトを格納します。パイプライン内のすべてのオブ ジェクトまたは選択されたオブジェクトに対してアクションを実行するコマンドで、この変数を使 用することができます。 $Args 宣言されていないパラメーターの配列や、関数、スクリプト、またはスクリプト ブロックに渡さ れるパラメーター値を格納します。 関数を作成する場合、param キーワードを使用するか、関数名の後にかっこで囲んでパラメータ ーのコンマ区切り一覧を追加すると、パラメーターを宣言できます。 $ConsoleFileName セッションで最後に使用されたコンソール ファイル (.psc1) のパスを格納します。PSConsoleFile パ ラメーターを使用して Windows PowerShell を起動する場合、または Export-Console コマンド レットを使用してコンソール ファイルにスナップインの名前をエクスポートする場合、この変数に 値が設定されます。 パラメーターなしで Export-Console コマンドレットを使用する場合、セッションで最後に使 用されたコンソール ファイルが自動的に更新されます。この自動変数を使用すると、どのファイル が更新されるかを判断できます。 $Error 最新のエラーを表すエラー オブジェクトの配列を格納します。配列内の最初のエラー オブジェ クト ($Error[0]) が最新のエラーです。 $Event 処理中のイベントを表す PSEventArgs オブジェクトを格納します。この変数は、 Register-ObjectEvent などのイベントの登録コマンドのアクション ブロック内でのみ設定され ます。この変数の値は、Get-Event コマンドレットから返されるオブジェクトと同じオブジェク トです。したがって、$Event.TimeGenerated などの $Event 変数のプロパティをアクション ス クリプト ブロックで使用できます。 $EventSubscriber 処理中のイベントのサブスクライバーを表す PSEventSubscriber オブジェクトを格納します。 この変数は、イベントの登録コマンドのアクション ブロック内でのみ設定されます。この変数 の値は、Get-EventSubscriber コマンドレットから返されるオブジェクトと同じオブジェクト です。 $ExecutionContext Windows PowerShell ホストの実行コンテキストを表す EngineIntrinsics オブジェクト を格納します。この変数を使用して、コマンドレットで使用できる実行オブジェクトを探すことが できます。 $False FALSE を格納します。文字列 "false" の代わりにこの変数を使用して、コマンドおよびスクリプト で FALSE を表すことができます。空でない文字列またはゼロ以外の整数に変換されると、この文 字列は TRUE として解釈されます。 $ForEach ForEach-Object ループの列挙子を格納します。変数 $ForEach の値に、列挙子のプロパティ およびメソッドを使用できます。この変数は For ループの実行中のみ存在します。ループが完了す ると削除されます。 $Home ユーザーのホーム ディレクトリの完全なパスを格納します。この変数は、 %homedrive%%homepath% 環境変数と同等で、通常は C:\Documents and Settings\<user> です。 $Host Windows PowerShell の現在のホスト アプリケーションを表すオブジェクトを格納します。 この変数を使用すると、コマンド内で現在のホストを表すことも、ホストのプロパティを表示また は変更することもできます ($Host.version、$Host.CurrentCulture、 $host.ui.rawui.setbackgroundcolor("Red") など)。 $Input 関数に渡される入力を格納する列挙子です。変数 $Input では大文字と小文字が区別され、この変 数は関数およびスクリプト ブロックでのみ使用できます (スクリプト ブロックは本質的には、名 前のない関数です)。関数の Process ブロックでは、現在パイプラインにあるオブジェクトが変 数 $Input に格納されます。Process ブロックが完了すると、$Input の値は NULL になりま す。関数に Process ブロックがない場合、$Input の値は End ブロックに渡されます。このと き $Input には、関数へのすべての入力が格納されています。 $LastExitCode 最後に実行された Windows ベースのプログラムの終了コードを格納します。 $Matches 変数 $Matches は -match 演算子および -not match 演算子と共に使用されます。 -match 演算子および -not match 演算子にスカラー入力を送信した場合に、いずれかによって一致 が検出されると、ブール値が返され、一致した任意の文字列値のハッシュ テーブルが $Matches 自 動変数に設定されます。-match 演算子の詳細については、 「about_comparison_operators」を参照してください。 $MyInvocation スクリプト、関数、スクリプト ブロックなど、現在のコマンドに関する情報を含むオブジェクト を格納します。スクリプトのパスおよびファイル名 ($myinvocation.mycommand.path) や関数の名前 ($myinvocation.mycommand.name) などのオブジェクトの情報を使用して、現在のコマンドを特定するこ とができます。これは、実行中のスクリプトの名前を検索する場合に特に便利です。 $NestedPromptLevel 現在のプロンプト レベルを格納します。値 0 は元のプロンプト レベルを示します。値は、入れ 子のレベルに入るとインクリメントされ、そのレベルから出るとデクリメントされます。 たとえば、$Host.EnterNestedPrompt メソッドを使用すると、Windows PowerShell は入れ子になった コマンド プロンプトを表示します。また、Windows PowerShell デバッガーでブレークポイン トに到達した場合も、Windows PowerShell は入れ子になったコマンド プロンプトを表示します。 入れ子になったプロンプトに入ると、Windows PowerShell は現在のコマンドを一時停止し、実行 コンテキストを保存し、変数 $NestedPromptLevel の値をインクリメントします。入れ子になったコ マンド プロンプトを追加で作成 (最大 128 のレベル) するか、元のコマンド プロンプトに戻すに は、コマンドを完了するか、"exit"と入力します。 変数 $NestedPromptLevel を使用すると、プロンプト レベルを追跡できます。常に表示され るように、この値を含む代替の Windows PowerShell コマンド プロンプトを作成することができま す。 $NULL NULL または空の値を格納します。文字列 "NULL" の代わりにこの変数を使用して、コマンドお よびスクリプトで NULL を表すことができます。空でない文字列またはゼロ以外の整数に変換され ると、この文字列は TRUE として解釈されます。 $PID 現在の Windows PowerShell セッションをホストしているプロセスのプロセス識別子 (PID) を格納します。 $Profile 現在のユーザーおよび現在のホスト アプリケーションの Windows PowerShell プロファイルの完 全なパスを格納します。この変数を使用すると、コマンドでプロファイルを表すことができます。 たとえば、コマンドでこの変数を使用して、プロファイルが作成されたかどうかを判断できます。 test-path $profile または、コマンドでこの変数を使用して、プロファイルを作成することができます。 new-item -type file -path $pshome -force コマンドでこの変数を使用して、メモ帳でプロファイルを開くこともできます。 notepad $profile $PSBoundParameters 有効なパラメーターとそのパラメーター現在の値のディクショナリを格納します。この変数に値が あるのは、スクリプトや関数など、パラメーターが宣言されているスコープに限定されます。 これを使用して、パラメーターの現在の値を表示または変更したり、別のスクリプトまたは関数に パラメーター値を渡したりすることができます。 次にその例を示します。 function test { param($a, $b) # ディクショナリ形式でパラメーターを表示します。 $psboundparameters # $a および $b を指定して Test1 関数を呼び出します。 test1 @psboundparameters } $PsCmdlet 実行中のコマンドレットまたは高度な関数を表すオブジェクトを格納します。 コマンドレットまたは関数コードでオブジェクトのプロパティとメソッドを使用して、 使用の条件に対応することができます。たとえば、ParameterSetName プロパティには 使用中のパラメーター セットの名前が格納され、ShouldProcess メソッドは WhatIf および Confirm パラメーターをコマンドレットに動的に追加します。 $PSCmdlet 自動変数の詳細については、「about_Functions_Advanced」を参照してください。 $PsCulture オペレーティング システムで現在使用されているカルチャの名前を格納します。数値、通貨、日 付などの項目の表示形式はカルチャによって決定されます。これは、システムの System.Globalization.CultureInfo.CurrentCulture.Name プロパティの値です。システムの System.Globalization.CultureInfo オブジェクトを取得するには、Get-Culture コマンドレットを使 用します。 $PSDebugContext この変数は、デバッグ中にデバッグ環境に関する情報を格納します。それ以外の場合は、NULL 値を格納します。つまりこれを使用して、デバッガーに制御があるかどうかを示すことができま す。この変数には、設定された場合は、Breakpoints プロパティおよび InvocationInfo プロパティを 持つ PsDebugContext オブジェクトが格納されます。InvocationInfo プロパティには、Location プロパ ティなどの有用なプロパティがいくつかあります。Location プロパティは、デバッグ中のスクリプ トのパスを示します。 $PsHome Windows PowerShell のインストール ディレクトリの完全なパスを格納します。これは通常、 %windir%\System32\WindowsPowerShell\v1.0 です。Windows PowerShell ファイルのパスでこ の変数を使用できます。たとえば、概念説明のヘルプ トピックで "variable" という単語を 検索するには、次のコマンドを入力します。 select-string -pattern variable -path $pshome\*.txt $PSScriptRoot スクリプト モジュールが実行されているディレクトリを格納します。 この変数を使用すると、スクリプトでモジュール パスを使用して他の リソースにアクセスできます。 $PsUICulture オペレーティング システムで現在使用されているユーザー インターフェイス (UI) カルチャ の名前を格納します。UI カルチャは、メニューやメッセージなどのユーザー インターフェイ ス要素にどのテキスト文字列を使用するかを指定します。これは、システムの System.Globalization.CultureInfo.CurrentUICulture.Name プロパティの値です。システム の System.Globalization.CultureInfo オブジェクトを取得するには、Get-UICulture コマン ドレットを使用します。 $PsVersionTable 現在のセッションで実行中の Windows PowerShell のバージョンについての詳細を表示する読み取 り専用ハッシュ テーブルを格納します。このテーブルには次の項目があります。 CLRVersion: 共通言語ランタイム (CLR) のバージョン BuildVersion: 現在のバージョンのビルド番号 PSVersion: Windows PowerShell のバージョン番号 WSManStackVersion: WS-Management スタックのバージョン番号 PSCompatibleVersions: 現在のバージョンと互換性がある Windows PowerShell のバージョン SerializationVersion: シリアル化メソッドのバージョン PSRemotingProtocolVersion Windows PowerShell リモート管理プロトコルのバージョン $Pwd 現在のディレクトリの完全なパスを表すパス オブジェクトを格納します。 $Sender このイベントを生成したオブジェクトを格納します。この変数は、イベントの登録コマンド のアクション ブロック内でのみ設定されます。この変数の値は、Get-Event から返される PSEventArgs (System.Management.Automation.PSEventArgs) オブジェクトの Sender プロパ ティでも参照できます。 $ShellID 現在のシェルの識別子を格納します。 $SourceArgs 処理中のイベントのイベント引数を表すオブジェクトを格納します。この変数は、イベント の登録コマンドのアクション ブロック内でのみ設定されます。この変数の値は、Get-Event から返される PSEventArgs (System.Management.Automation.PSEventArgs) オブジェクトの SourceArgs プロパティでも参照できます。 $SourceEventArgs 処理中のイベントの EventArgs から派生した 1 番目のイベント引数を表すオブジェクトを 格納します。この変数は、イベントの登録コマンドのアクション ブロック内でのみ設定され ます。この変数の値は、Get-Event から返される PSEventArgs (System.Management.Automation.PSEventArgs) オブジェクトの SourceArgs プロパティでも 参照できます。 $This スクリプト プロパティまたはスクリプト メソッドを定義するスクリプト ブロックにおいて、 変数 $This は、拡張されているオブジェクトそのものを指します。 $True TRUE を格納します。この変数を使用して、コマンドおよびスクリプトで TRUE を表すことがで きます。 関連項目 about_Hash_Tables about_Preference_Variables about_Variables