about_automatic_variables
トピック
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 演算子および -notmatch 演算子にスカラー入力を送信した場合に、いずれかによって一致
が検出されると、ブール値が返され、一致した任意の文字列値のハッシュ テーブルが $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