Powershell 自動化變數 是那些一旦開啟Powershell就會自動載入的變數。
這些變數一般存放的內容包括
使用者資訊:例如使用者的根目錄$home
配置資訊:例如powershell控制台的大小,顏色,背景等。
運行時資訊:例如一個函數由誰調用,一個指令碼啟動並執行目錄等。
PS> $HOMEC:\Users\testPS> $currentProcessID=$pidPS> $currentProcessID5356PS> Get-Process -Id $pidHandles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName------- ------ ----- ----- ----- ------ -- ----------- 390 10 30604 33100 172 1.11 5356 powershellPS> $PROFILEC:\Users\test\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
powershell中的某些自動化變數只能讀,不能寫。例如:$Pid。
可以通過Get-Help about_Automatic_variables查看Automatic_variables的協助。
TOPIC
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 對象,該對象表示一個正在被處理的事件。此變數只在事件註冊命令(例如 Register-ObjectEvent)的 Action 塊內填充。此變數的值是 Get-Event cmdlet 返回的同一個對象。因此,可以在 Action 指令碼塊中使用 $Event 變數的屬性(例如$Event.TimeGenerated)。$EventSubscriber包含一個 PSEventSubscriber 對象,該對象表示正在被處理的事件的事件訂閱者。此變數只在事件註冊命令的 Action 塊內填充。此變數的值是 Get-EventSubscriber cmdlet 返回的同一個對象。$ExecutionContext包含一個 EngineIntrinsics 對象,該對象表示 Windows PowerShell 主機的執行內容。可以使用此變數來尋找可用於 cmdlet 的執行對象。$False包含 FALSE。可以使用此變數在命令和指令碼中表示 FALSE,而不是使用字串”false”。如果該字串轉換為非Null 字元串或非零整數,則可將該字串解釋為 TRUE。$ForEach包含 ForEach-Object 迴圈的枚舉數。可以對 $ForEach 變數的值使用枚舉數的屬性和方法。此變數僅在運行 For 迴圈時存在,迴圈完成即會刪除。$Home包含使用者的主目錄的完整路徑。此變數等效於 %homedrive%%homepath% 環境變數。$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 變數有助於跟蹤提示層級。可以建立包含此值的備用 WindowsPowerShell 命令提示字元,以使此值始終可見。$NULL包含 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)# Display the parameters in dictionary format.$psboundparameters# Call the Test1 function with $a and $b.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%System32WindowsPowerShellv1.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: 通用語言執行平台 (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包含當前 shell 的標識符。$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_Va
riables
about_Variables