閱讀英文

共用方式為


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