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

  1. Powershell環境變量

傳統的控制檯通常沒有象Powershell這麼高級的變量系統。它們都是依賴於機器自己的環境變量,進行操做 。環境變量對於powershell顯得很重要,由於它涵蓋了許多操做系統的細節信息。此外,powershell中的變量只存在於powershell內部的會話中,一旦powershell關閉,這些變量就會自生自滅。可是若是環境變量被更新了,它會繼續保存在操做系統中,即便其它程序也能夠調用它。 shell

讀取特殊的環境變量: session

經過環境變量讀取Windows操做系統的安裝路徑,和默認應用程序的安裝路徑。 ide

經過$env:,這就提示powershell忽略基本的variable:驅動器,而是去環境變量env:驅動器中尋找變量。爲了和其它變量保持一致,powershell環境變量也能夠象其它變量那樣使用。好比你能夠把它插入到文本中。 函數

查找環境變量: 測試

建立新的環境變量: spa

不用擔憂建立了環境變量會一直存在,其實$env:中的環境變量只是機器環境變量的一個副本,即便你更改了它,下一次從新打開時,又會恢復如初。(.NET方法更新環境變量除外) 操作系統

咱們能夠將受信任的文件夾列表追加到環境變量的末尾,這樣就能夠直接經過相對路徑執行這些文件下的文件或者腳本,甚至省略擴展名均可以。 3d

 

環境變量更新生效 code

上述對於環境變量的操做只會影響當前powershell會話,並無更新在機器上。 對象

.NET方法[environment]::SetEnvironmentvariable操做能夠馬上生效。

下面的例子對當前用戶設置環境變量,經測試,從新打開powershell仍然存在

[environment]::SetEnvironmentvariable("Path", ";c:powershellscript", "User")

[environment]::GetEnvironmentvariable("Path", "User") 

 

  1. Powershell驅動器變量

Powershell中全部不是咱們本身的定義的變量都屬於驅動器變量(好比環境變量),它的前綴只是提供給咱們一個能夠訪問信息的虛擬驅動器.。例如env:windir,象env:驅動器上的一個"文件",咱們經過$訪問它,就會返回"文件"的內容。

直接訪問文件路徑:

經過驅動器直接訪問文件路徑,也支持物理驅動器,必須把文件路徑放在封閉的大括號中,由於正常的文件路徑包含兩個特殊字符":"和"",有可能會被powershell解釋器誤解。

上述的例子有一個限制,就是${$env:HOMEDRIVE/Powershellping.bat}不能識別,緣由是$後花括號中的路徑必須是具體的路徑,而不能帶返回值。

解決方法:

Invoke-Expression "`${$env:HOMEDRIVE/Powershell/ping.bat}" 

由於反引號"`"放在$前,會把$解析成普通字符,解釋器會繼續去解析第二個$,發現env:HOMEDRIVE,將其替換成c,到此 Invoke-Expression的參數就變成了${C:/Powershell/ping.bat},繼續執行這個表達式就能夠了。

查看Powershell支持的驅動器,可使用Get-PSDrive查看。

Name

Root

Description

A

A:

 

Alias

 

Drive containing a view of the aliases stored in session state.

C

C:

 

cert

 

X509 Certificate Provider

E

E:

 

Env

 

The drive containing a view of the environment variables for the process.

Function

 

The drive containing a view of the functions stored in session state.

HKCU

HKEY_CURRENT_USER

The software settings for the current user.

HKLM

HKEY_LOCAL_MACHINE

The configuration settings for the local machine.

Variable

 

The drive containing a view of those variables stored in session state.

WSMan

 

Root of WsMan Config Storage.

PSDrive中的大多都支持直接路徑訪問,例如能夠經過函數路徑,訪問一個函數的具體實現。

 

特殊的變量:子表達式

由 $+圓括號+表達式 構成的變量屬於子表達式變量,這樣的變量會先計算表達式,而後把表達式的值返回。

例如 變量$(3+6),能夠簡寫成(3+6),甚至能夠簡寫成3+6。子表達式變量也能夠嵌套在文本中,例如"result=$(3+6)"。

在處理對象的屬性時,會大量的用到表達式變量。例如:

相關文章
相關標籤/搜索