[Windows Powershell]-學習筆記(5)

  1. Powershell自動化變量

Powershell 自動化變量 是那些一旦打開Powershell就會自動加載的變量,或者說是運行是變量。 shell

這些變量通常存放的內容包括 數組

用戶信息:例如用戶的根目錄$home 函數

配置信息:例如powershell控制檯的大小,顏色,背景等。 ui

運行時信息:例如一個函數由誰調用,一個腳本運行的目錄等。 spa

powershell中的某些自動化變量只能讀,不能寫。例如:$Pid。 操作系統

能夠經過Get-Help about_Automatic_variables查看Automatic_variables的幫助。 調試

TOPIC
about_Automatic_Variables
orm

主題
about_Automatic_Variables
對象

簡短說明
說明存儲 Windows PowerShell 狀態信息的變量。
這些變量由 Windows PowerShell 建立並維護。
blog

詳細說明
下面是 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"。若是
該字符串轉換爲非空字符串或非零整數,則可將該字符串解釋爲 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 變量有助於跟蹤提示級別。能夠建立包含此值的備用 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)

# 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

riablesabout_Variables

相關文章
相關標籤/搜索