about_Automatic_Variables
主題
about_Automatic_Variables
簡短描述
描述儲存 Windows PowerShell 狀態資訊的變數。
這些變數是由 Windows PowerShell 建立及維護。
完整描述
下面列出 Windows PowerShell 的自動變數:
$$
包含工作階段所收到最後一行的最後一個語彙基元。
$?
包含上一個作業的執行狀態。包含 TRUE 表示上一個作業成功,而包含 FALSE
表示失敗。
$^
包含工作階段所收到最後一行的第一個語彙基元。
$_
包含管線物件中的目前物件。您可以在對管線中每個物件或所選物件執行動作的
命令內使用這個變數。
$Args
包含傳遞給函數、指令碼或指令碼區塊的未宣告參數和 (或) 參數值的陣列。
建立函數時,只要使用 param 關鍵字,或在函數名稱後面加上以括號括住的逗號
分隔的參數清單,即可宣告參數。
$ConsoleFileName
包含最近在工作階段中使用的主控台檔案 (.psc1) 的路徑。以 PSConsoleFile
參數啟動 Windows PowerShell 時,或使用 Export-Console Cmdlet 將嵌入式
管理單元名稱匯出至主控台檔案時,會填入這個變數。
使用 Export-Console Cmdlet 而不加上參數時,會自動更新最近在工作階段中
使用的主控台檔案。您可以使用這個自動變數,決定要更新的檔案。
$Error
包含代表最近錯誤的錯誤物件陣列。最近錯誤為陣列中的第一個錯誤物件
($Error[0])。
$Event
包含 PSEventArgs 物件,此物件代表處理中的事件。此變數僅填入事件註冊命令
的 Action 區塊中,例如 Register-ObjectEven。此變數的值和
Get-Event Cmdlet 傳回的值是相同的物件。
因此,您可以在 Action 指令碼區塊中使用 $Event 變數的屬性,
例如 as$Event.TimeGenerated。
$EventSubscriber
包含 PSEventSubscriber 物件,此物件代表處理中之事件的事件訂閱者。此變數
僅填入事件註冊命令的 Action 區塊中。此變數的值和
Get-EventSubscriber Cmdlet 傳回的值是相同的物件。
$ExecutionContext
包含一個代表 Windows PowerShell 主控程式之執行內容的 EngineIntrinsics
物件。
您可以使用這個變數尋找 Cmdlet 可用的執行物件。
$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 區
塊,而且會包含對函數的所有輸入。
$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
包含一個代表開始執行之 Cmdlet 或進階函數的物件。
您可以在 Cmdlet 或函數程式碼中使用這個物件的屬性和方法,以回應使用的
情況。例如,ParameterSetName 屬性會包含使用中之參數集的名稱,而
ShouldProcess 方法會動態將 WhatIf 和 Confirm 參數新增至 Cmdlet。
如需 $PSCmdlet 自動變數的詳細資訊,請參閱 about_Functions_Advanced。
$PsCulture
包含作業系統目前使用的文化特性名稱。文化特性決定項目 (如數字、貨幣和日
期) 的顯示格式。這是系統的
System.Globalization.CultureInfo.CurrentCulture.Name 屬性值。
若要取得系統的 System.Globalization.CultureInfo 物件,請
使用 Get-Culture Cmdlet。
$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 Cmdlet。
$PsVersionTable
包含一個唯讀雜湊表,其顯示目前工作階段中執行的 Windows PowerShell 版本
之詳細資訊。
這個雜湊表包括下列項目:
CLRVersion: Common Language Runtime (CLR) 的版本
BuildVersion: 目前版本的組建編號
PSVersion: Windows PowerShell 版本號碼
WSManStackVersion: WS-Management 堆疊的版本號碼
PSCompatibleVersions: 與目前版本相容的 Windows PowerShell 版本
SerializationVersion 序列化方法的版本
PSRemotingProtocolVersion
Windows PowerShell 遠端管理通訊協定的版本
$Pwd
包含一個代表目前目錄完整路徑的路徑物件。
$Sender
包含產生此事件的物件。此變數僅填入事件註冊命令的 Action 區塊中。
Get-Event 傳回之 PSEventArgs (System.Management.Automation.PSEventArgs)
物件的 Sender 屬性中也可找到此變數的值。
$ShellID
包含目前殼層的識別元。
$SourceArgs
包含物件,此物件代表處理中之事件的事件引數。此變數僅填入事件註冊命令的
Action 區塊中。Get-Event 傳回之 PSEventArgs
(System.Management.Automation.PSEventArgs) 物件的 SourceArgs 屬性中
也可找到此變數的值。
$SourceEventArgs
包含物件,此物件代表衍生自處理中之事件的 EventArgs 的第一個事件引數。此
變數僅填入事件註冊命令的 Action 區塊中。Get-Event 傳回之
PSEventArgs (System.Management.Automation.PSEventArgs) 物件的
SourceArgs 屬性中也可找到此變數的值。
$This
在定義指令碼屬性和指令碼方法的指令碼區塊中,$This 變數指的是正在執行的
物件。
$True
包含 TRUE。您可以在命令和指令碼中使用這個變數代表 TRUE。
請參閱
about_Hash_Tables
about_Preference_Variables
about_Variables