主題 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 (提供者)