about_Environment_Variables
主題
about_Environment_Variables
簡短描述
描述如何在 Windows PowerShell 中存取 Windows 環境變數。
完整描述
環境變數儲存著作業系統環境的相關資訊。這些資訊包括作業系統路徑、作業系統使
用的處理器數目,以及暫存資料夾的位置等詳細資料。
環境變數所儲存的資料可供作業系統及其他程式使用。例如,WINDIR 環境變數包含
了 Windows 安裝目錄的位置。程式只要查詢此變數的值,即可得知 Windows 作業系
統檔案所在位置。
Windows PowerShell 可以用來檢視和變更 Windows 環境變數,包括在登錄中設定的
變數,以及針對特定工作階段所設定的變數。Windows PowerShell 環境提供者可以簡
化檢視和變更環境變數的處理程序。
與 Windows PowerShell 中其他類型的變數不同,環境變數及其值會由子工作階段
(例如本機背景工作) 以及其中執行模組成員的工作階段所繼承。這使環境變數非常
適合儲存父工作階段和子工作階段中所需的值。
Windows PowerShell 環境提供者
Windows PowerShell 環境提供者讓您可在 Windows PowerShell 中,從 Windows
PowerShell 磁碟機 (Env: 磁碟機) 存取 Windows 環境變數。這個磁碟機與檔案
系統磁碟機看來很類似。若要切換到 Env: 磁碟機,請輸入:
set-location env:
接著,若要顯示 Env: 磁碟機的內容,請輸入:
get-childitem
您可以從任何其他 Windows PowerShell 磁碟機切換到 Env: 磁碟機來檢視環境變
數,也可以進入 Env: 磁碟機來檢視和變更環境變數。
環境變數物件
在 Windows PowerShell 中,每個環境變數都是以物件表示,也就是
System.Collections.DictionaryEntry 類別的執行個體。
在每個 DictionaryEntry 物件中,環境變數的名稱就是字典索引鍵。變數的值就
是字典值。
若要在 Windows PowerShell 中顯示環境變數,請先取得代表變數的物件,然後顯
示物件屬性的值。使用與 DictionaryEntry 物件關聯的各種方法即可在
Windows PowerShell 中變更環境變數。
若要在 Windows PowerShell 中顯示代表環境變數之物件的屬性和方法,請使用
Get-Member Cmdlet。
例如,若要顯示 Env: 磁碟機上所有物件的方法和屬性,請輸入:
get-item -path env:* | get-member
顯示環境變數
您可以使用包含 Item 名詞 (Item Cmdlet) 的 Cmdlet 來顯示及變更環境變數的
值。由於環境變數沒有子項目,所以 Get-Item 和 Get-ChildItem 會產生相同的
輸出。
參照環境變數時,請輸入 Env: 磁碟機名稱再加上變數的名稱。例如,若要顯示
COMPUTERNAME 環境變數的值,請輸入:
get-childitem env:computername
若要顯示所有環境變數的值,請輸入:
get-childitem env:
根據預設,Windows PowerShell 會依擷取的順序顯示環境變數。若要讓環境變數
的清單依變數名稱排序,請將 Get-ChildItem 命令的輸出傳送給 Sort-Object
Cmdlet。例如,您可從任何 Windows PowerShell 磁碟機輸入:
get-childitem env: | sort name
您也可以使用 Set-Location Cmdlet 進入 Env: 磁碟機:
set-location env:
當您位在 Env: 磁碟機上時,可以在路徑中省略 Env: 磁碟機名稱。例如,若要顯
示所有的環境變數,請輸入:
get-childitem
若要從 Env: 磁碟機內部顯示 COMPUTERNAME 變數的值,請輸入:
get-childitem computername
您也可以不使用 cmdlet,而改用 Windows PowerShell 運算式剖析器顯示及變更環
境變數的值。若要顯示環境變數的值,請使用下列語法:
$env:<變數名稱>
例如,若要顯示 WINDIR 環境變數的值,請在 Windows PowerShell 命令提示字元
輸入下列命令:
$env:windir
在這個語法中,貨幣符號 ($) 表示變數,磁碟機名稱則表示環境變數。
變更環境變數
若要對環境變數進行永久變更,請使用 [控制台] 的 [系統] ([進階] 索引標籤或
[進階系統設定] 項目) 儲存登錄中的變更。
當您變更 Windows PowerShell 中的環境變數時,該變更只會影響目前的工作階段。
這項行為與 Windows 環境中的 Set 命令及 UNIX 環境中的 Setenv 命令行為類似。
您也必須擁有變更變數值的權限。若您沒有足夠的權限而試圖變更值,命令就會失
敗且 Windows PowerShell 將顯示錯誤。
您可以不使用 Cmdlet,而改用下列語法變更變數的值:
$env:<變數名稱> = "<新值>"
例如,若要將 ";c:\temp" 附加到 Path 環境變數的值後面,請使用下列語法:
$env:path = $env:path + ";c:\temp"
也可以使用 Item Cmdlet (例如,Set-Item、Remove-Item 和 Copy-Item) 來變更
環境變數的值。例如,若要使用 Set-Item Cmdlet 將 ";c:\temp" 附加到 Path
環境變數的值後面,請使用下列語法:
set-item -path env:path -value ($env:path + ";c:\temp")
在此命令中,新值置於括號中,所以會解譯為一個單位。
儲存對環境變數的變更
若要在每個 Windows PowerShell 工作階段中建立或變更環境變數的值,請將變更
新增到 Windows PowerShell 設定檔。
例如,若要在每個 Windows PowerShell 工作階段中將 C:\Temp 目錄新增到 Path
環境變數,請將下列命令新增到 Windows PowerShell 設定檔。
$env:path = $env:path + ";c:\temp"
若要將命令新增到現有的設定檔 (例如 CurrentUser,AllHosts 設定檔),請輸入:
add-content -path $profile.CurrentUserAllHosts -value '$env:path =
$env:path + ";c:\temp"'
儲存喜好設定的環境變數
Windows PowerShell 功能可以使用環境變數來儲存使用者喜好設定。這些變數的
功能與喜好設定變數相同,但會由建立時所在的工作階段的子工作階段繼承。如
需喜好設定變數的詳細資訊,請參閱 about_preference_variables。
儲存喜好設定的環境變數包括:
PSModulePath
儲存預設模組目錄的路徑。當您未指定模組的完整路徑時,
Windows PowerShell 會在指定的目錄中尋找模組。
$env:PSModulePath 的預設值為:
$home\Documents\WindowsPowerShell\Modules; $pshome\Modules
Windows PowerShell 會在登錄中設定 "$pshome\Modules" 的值。
每次您啟動 Windows PowerShell 時,它就會設定
"$home\Documents\WindowsPowerShell\Modules" 的值。
此外,在其他目錄 (例如 Program Files 目錄) 中安裝模組的安裝程式會
將其位置附加到 PSModulePath 的值
若要變更預設的模組目錄,請變更 PSModulePath 環境變數的值。
例如,若要將 "C:\ps-test\Modules" 目錄新增到 PSModulePath 環境變數
的值,請輸入:
$env:PSModulePath = $env:PSModulePath + ";c:\ps-test\Modules"
命令中的分號 (;) 是用於在清單中分隔新路徑與其前面的路徑。
除非您在設定檔中新增變更值的命令,或使用 [控制台] 中的 [系統] 變更
登錄中 PSModulePath 環境變數的值,否則您的變更只會影響目前的工作階
段。
如需詳細資訊,請參閱 about_Modules。
請參閱
Environment (提供者)