Powershell 自動(dòng)化變量 是那些一旦打開Powershell就會(huì)自動(dòng)加載的變量。
這些變量一般存放的內(nèi)容包括
用戶信息:例如用戶的根目錄$home
配置信息:例如powershell控制臺(tái)的大小,顏色,背景等。
運(yùn)行時(shí)信息:例如一個(gè)函數(shù)由誰調(diào)用,一個(gè)腳本運(yùn)行的目錄等。
PS> $HOME
C:\Users\test
PS> $currentProcessID=$pid
PS> $currentProcessID
5356
PS> Get-Process -Id $pid
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
390 10 30604 33100 172 1.11 5356 powershell
PS> $PROFILE
C:\Users\test\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
powershell中的某些自動(dòng)化變量只能讀,不能寫。例如:$Pid。
可以通過Get-Help about_Automatic_variables查看Automatic_variables的幫助。
TOPIC
about_Automatic_Variables
主題
about_Automatic_Variables
簡短說明
說明存儲(chǔ) Windows PowerShell 狀態(tài)信息的變量。
這些變量由 Windows PowerShell 創(chuàng)建并維護(hù)。
詳細(xì)說明
下面是 Windows PowerShell 中的自動(dòng)變量的列表:
$$
包含會(huì)話所收到的最后一行中的最后一個(gè)令牌。
$?
包含最后一個(gè)操作的執(zhí)行狀態(tài)。如果最后一個(gè)操作成功,則包含 TRUE,失敗則包含 FALSE。
$^
包含會(huì)話所收到的最后一行中的第一個(gè)令牌。
$_
包含管道對(duì)象中的當(dāng)前對(duì)象。在對(duì)管道中的每個(gè)對(duì)象或所選對(duì)象執(zhí)行操作的命令中,可以使用此變量。
$Args
包含由未聲明參數(shù)和/或傳遞給函數(shù)、腳本或腳本塊的參數(shù)值組成的數(shù)組。
在創(chuàng)建函數(shù)時(shí)可以聲明參數(shù),方法是使用 param 關(guān)鍵字或在函數(shù)名稱后添加以圓括號(hào)括起、逗號(hào)
分隔的參數(shù)列表。
$ConsoleFileName
包含在會(huì)話中最近使用的控制臺(tái)文件 (.psc1) 的路徑。在通過 PSConsoleFile 參數(shù)啟動(dòng)
Windows PowerShell 或使用 Export-Console cmdlet 將管理單元名稱導(dǎo)出到控制臺(tái)文件
時(shí),將填充此變量。
在使用不帶參數(shù)的 Export-Console cmdlet 時(shí),它自動(dòng)更新在會(huì)話中最近使用的控制臺(tái)文件。
可以使用此自動(dòng)變量確定要更新的文件。
$Error
包含錯(cuò)誤對(duì)象的數(shù)組,這些對(duì)象表示最近的一些錯(cuò)誤。最近的錯(cuò)誤是該數(shù)組中的第一個(gè)錯(cuò)誤對(duì)象
($Error[0])。
$Event
包含一個(gè) PSEventArgs 對(duì)象,該對(duì)象表示一個(gè)正在被處理的事件。
此變量只在事件注冊命令(例如 Register-ObjectEvent)的 Action 塊內(nèi)填充。
此變量的值是 Get-Event cmdlet 返回的同一個(gè)對(duì)象。
因此,可以在 Action 腳本塊中使用 $Event 變量的屬性(例如
$Event.TimeGenerated)。
$EventSubscriber
包含一個(gè) PSEventSubscriber 對(duì)象,該對(duì)象表示正在被處理的事件的事件訂閱者。
此變量只在事件注冊命令的 Action 塊內(nèi)填充。此變量的值
是 Get-EventSubscriber cmdlet 返回的同一個(gè)對(duì)象。
$ExecutionContext
包含一個(gè) EngineIntrinsics 對(duì)象,該對(duì)象表示 Windows PowerShell 主機(jī)的執(zhí)行上下文。
可以使用此變量來查找可用于 cmdlet 的執(zhí)行對(duì)象。
$False
包含 FALSE。可以使用此變量在命令和腳本中表示 FALSE,而不是使用字符串”false”。如果
該字符串轉(zhuǎn)換為非空字符串或非零整數(shù),則可將該字符串解釋為 TRUE。
$ForEach
包含 ForEach-Object 循環(huán)的枚舉數(shù)??梢詫?duì) $ForEach 變量的值使用枚舉數(shù)的屬性和方法。
此變量僅在運(yùn)行 For 循環(huán)時(shí)存在,循環(huán)完成即會(huì)刪除。
$Home
包含用戶的主目錄的完整路徑。此變量等效于 %homedrive%%homepath% 環(huán)境變量。
$Host
包含一個(gè)對(duì)象,該對(duì)象表示 Windows PowerShell 的當(dāng)前主機(jī)應(yīng)用程序??梢允褂么俗兞吭诿?
令中表示當(dāng)前主機(jī),或者顯示或更改主機(jī)的屬性,如 $Host.version、$Host.CurrentCulture
或 $host.ui.rawui.setbackgroundcolor(“Red”)。
$Input
一個(gè)枚舉數(shù),它包含傳遞給函數(shù)的輸入。$Input 變量區(qū)分大小寫,只能用于函數(shù)和腳本塊。(腳
本塊本質(zhì)上是未命名的函數(shù)。)在函數(shù)的 Process 塊中,$Input 變量包含當(dāng)前位于管道中的對(duì)
象。在 Process 塊完成后,$Input 的值為 NULL。如果函數(shù)沒有 Process 塊,則 $Input
的值可用于 End 塊,它包含函數(shù)的所有輸入。
$LastExitCode
包含運(yùn)行的最后一個(gè)基于 Windows 的程序的退出代碼。
$Matches
$Matches 變量與 -match 和 -not match 運(yùn)算符一起使用。
將標(biāo)量輸入提交給 -match 或 -notmatch 運(yùn)算符時(shí),如果檢測到匹配,則會(huì)返回一個(gè)布爾值,
并使用由所有匹配字符串值組成的哈希表填充 $Matches 自動(dòng)變量。有關(guān) -match 運(yùn)算符的詳細(xì)
信息,請(qǐng)參閱 about_comparison_operators。
$MyInvocation
包含一個(gè)對(duì)象,該對(duì)象具有有關(guān)當(dāng)前命令(如腳本、函數(shù)或腳本塊)的信息??梢允褂迷搶?duì)象中的
信息(如腳本的路徑和文件名 ($myinvocation.mycommand.path) 或函數(shù)的名稱
($myinvocation.mycommand.name))來標(biāo)識(shí)當(dāng)前命令。對(duì)于查找正在運(yùn)行的腳本的名稱,這非常有用。
$NestedPromptLevel
包含當(dāng)前提示級(jí)別。值 0 指示原始提示級(jí)別。該值在進(jìn)入嵌套級(jí)別時(shí)遞增,在退出嵌套級(jí)別時(shí)遞減。
例如,在使用 $Host.EnterNestedPrompt 方法時(shí),Windows PowerShell 會(huì)出現(xiàn)嵌套命令
提示符。在 Windows PowerShell 調(diào)試程序中到達(dá)斷點(diǎn)時(shí),Windows PowerShell 也會(huì)出現(xiàn)嵌
套命令提示符。
在進(jìn)入嵌套提示時(shí),Windows PowerShell 暫停當(dāng)前命令,保存執(zhí)行上下文,并遞增
$NestedPromptLevel 變量的值。要?jiǎng)?chuàng)建更多嵌套命令提示符(最多 128 級(jí))或返回到原始命
令提示符,請(qǐng)完成命令,或鍵入”exit”。
$NestedPromptLevel 變量有助于跟蹤提示級(jí)別。可以創(chuàng)建包含此值的備用 Windows
PowerShell 命令提示符,以使此值始終可見。
$NULL
包含 NULL 或空值。可以在命令和腳本中使用此變量表示 NULL,而不是使用字符串”NULL”。
如果該字符串轉(zhuǎn)換為非空字符串或非零整數(shù),則可將該字符串解釋為 TRUE。
$PID
包含承載當(dāng)前 Windows PowerShell 會(huì)話的進(jìn)程的進(jìn)程標(biāo)識(shí)符 (PID)。
$Profile
包含當(dāng)前用戶和當(dāng)前主機(jī)應(yīng)用程序的 Windows PowerShell 配置文件的完整路徑??梢栽诿?
中使用此變量表示配置文件。例如,可以在命令中使用此變量確定是否已創(chuàng)建某個(gè)配置文件:
test-path $profile
也可以在命令中使用此變量創(chuàng)建配置文件:
new-item -type file -path $pshome -force
此外,還可以在命令中使用此變量在記事本中打開配置文件:
notepad $profile
$PSBoundParameters
包含活動(dòng)參數(shù)及其當(dāng)前值的字典。只有在聲明參數(shù)的作用域(如腳本或函數(shù))中,
此變量才有值??梢允褂么俗兞匡@示或更改參數(shù)的當(dāng)前值,也可以將參數(shù)值傳遞給
其他腳本或函數(shù)。
例如:
function test {
param($a, $b)
# Display the parameters in dictionary format.
$psboundparameters
# Call the Test1 function with $a and $b.
test1 @psboundparameters
}
$PsCmdlet
包含一個(gè)對(duì)象,該對(duì)象表示正在運(yùn)行的 cmdlet 或高級(jí)函數(shù)。
可以在 cmdlet 或函數(shù)代碼中使用該對(duì)象的屬性和方法來響應(yīng)使用的條件。例如,
ParameterSetName 屬性包含正在使用的參數(shù)集的名稱,而 ShouldProcess 方法將 WhatIf
和 Confirm 參數(shù)動(dòng)態(tài)添加到 cmdlet。
有關(guān) $PSCmdlet 自動(dòng)變量的詳細(xì)信息,請(qǐng)參閱 about_Functions_Advanced。
$PsCulture
包含操作系統(tǒng)中當(dāng)前所用的區(qū)域性的名稱。區(qū)域性確定數(shù)字、貨幣和日期等項(xiàng)的顯示格式。這是系
統(tǒng)的 System.Globalization.CultureInfo.CurrentCulture.Name 屬性的值。要獲取系統(tǒng)
的 System.Globalization.CultureInfo 對(duì)象,請(qǐng)使用 Get-Culture cmdlet。
$PSDebugContext
在調(diào)試期間,此變量包含有關(guān)調(diào)試環(huán)境的信息。在其他時(shí)間,此變量包含 NULL 值。因此,可以使
用此變量指示調(diào)試程序是否擁有控制權(quán)。填充之后,此變量包含一個(gè)具有 Breakpoints 和
InvocationInfo 屬性的 PsDebugContext 對(duì)象。InvocationInfo 屬性有多個(gè)十分有用的
屬性,包括 Location 屬性。Location 屬性指示正在調(diào)試的腳本的路徑。
$PsHome
包含 Windows PowerShell 的安裝目錄的完整路徑(通常為
%windir%System32WindowsPowerShellv1.0)??梢栽?Windows PowerShell 文件
的路徑中使用此變量。例如,下面的命令在概念性幫助主題中搜索”variable”一詞:
select-string -pattern variable -path $pshome*.txt
$PSScriptRoot
包含要從中執(zhí)行腳本模塊的目錄。
通過此變量,腳本可以使用模塊路徑來訪問其他資源。
$PsUICulture
包含操作系統(tǒng)中當(dāng)前所用的用戶界面 (UI) 區(qū)域性的名稱。UI 區(qū)域性確定哪些文本字符串用于用戶
界面元素(如菜單和消息)。這是系統(tǒng)的
System.Globalization.CultureInfo.CurrentUICulture.Name 屬性的值。要獲取系統(tǒng)
的 System.Globalization.CultureInfo 對(duì)象,請(qǐng)使用 Get-UICulture cmdlet。
$PsVersionTable
包含一個(gè)只讀哈希表,該哈希表顯示有關(guān)在當(dāng)前會(huì)話中運(yùn)行的 Windows PowerShell 版本的詳
細(xì)信息。
該表包括下列項(xiàng):
CLRVersion: 公共語言運(yùn)行時(shí) (CLR) 的版本
BuildVersion: 當(dāng)前版本的內(nèi)部版本號(hào)
PSVersion: Windows PowerShell 版本號(hào)
WSManStackVersion: WS-Management 堆棧的版本號(hào)
PSCompatibleVersions: 與當(dāng)前版本兼容的 Windows PowerShell 版本
SerializationVersion :序列化方法的版本
PSRemotingProtocolVersion:Windows PowerShell 遠(yuǎn)程管理協(xié)議的版本
$Pwd
包含一個(gè)路徑對(duì)象,該對(duì)象表示當(dāng)前目錄的完整路徑。
$Sender
包含生成此事件的對(duì)象。此變量只在事件注冊命令的 Action 塊內(nèi)填充。
此變量的值也可在 Get-Event 返回的 PSEventArgs
(System.Management.Automation.PSEventArgs) 對(duì)象的 Sender 屬性中找到。
$ShellID
包含當(dāng)前 shell 的標(biāo)識(shí)符。
$SourceArgs
包含表示正在被處理的事件的事件參數(shù)的對(duì)象。此變量只在事件注冊命令的 Action
塊內(nèi)填充。此變量的值也可在 Get-Event 返回的 PSEventArgs
(System.Management.Automation.PSEventArgs) 對(duì)象的 SourceArgs 屬性中找到。
$SourceEventArgs
包含一個(gè)對(duì)象,該對(duì)象表示從正在被處理的事件的 EventArgs 中派生出的
第一個(gè)事件參數(shù)。此變量只在事件注冊命令的 Action 塊內(nèi)填充。
此變量的值也可在 Get-Event 返回的 PSEventArgs
(System.Management.Automation.PSEventArgs) 對(duì)象的 SourceArgs 屬性中找到。
$This
在定義腳本屬性或腳本方法的腳本塊中,$This 變量引用要擴(kuò)展的對(duì)象。
$True
包含 TRUE??梢栽诿詈湍_本中使用此變量表示 TRUE。
另請(qǐng)參閱
about_Hash_Tables
about_Preference_Va
riables
about_Variables
您可能感興趣的文章:- PowerShell小技巧實(shí)現(xiàn)IE Web自動(dòng)化
- PowerShell ISE自動(dòng)化簡單示例
- PowerShell 4.0實(shí)現(xiàn)自動(dòng)化設(shè)置服務(wù)器