主題 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