Environment Provider
提供者名稱
Environment
磁碟機
Env:
簡短描述
提供 Windows 環境變數的存取權。
詳細描述
Windows PowerShell Environment 提供者可以用來取得、新增、變更、清除和刪除 Windows PowerShell 中的 Windows 環境變數。
Environment 提供者是指僅包含代表環境變數之物件一般命名空間。變數沒有子項目。
每個環境變數都是 System.Collections.DictionaryEntry 類別的執行個體。變數的名稱就是字典索引鍵。環境變數的值就是字典值。
Environment 提供者會在 Env: 磁碟機中公開其資料存放區。若要使用環境變數,請將您的位置變更為 Env: 磁碟機 ("set-location env:"),或是從其他 Windows PowerShell 磁碟機執行工作。若要從其他位置參考環境變數,請在路徑中使用磁碟機名稱 Env:。
環境變數提供者支援包含 Item 名詞的所有 Cmdlet,但 Invoke-Item 除外。此外,它也支援 Get-Content 和 Set-Content Cmdlet。不過,它既不支援包含 ItemProperty 名詞的 Cmdlet,也不支援任何 Cmdlet 中的 Filter 參數。
環境變數必須符合一般的命名標準。此外,名稱中不能包括等號 (=)。
環境變數的變更只會影響目前的工作階段。若要儲存變更,請將變更新增到 Windows PowerShell 設定檔,或是使用 Export-Console 來儲存目前的工作階段。
範例
切換到 Env: 磁碟機
-------------------------- 範例 1 --------------------------
這個命令會將目前的位置變更為 Env: 磁碟機:
set-location env:
您可以在 Windows PowerShell 中從任何的磁碟機執行此命令。若要返回檔案系統磁碟機,請輸入磁碟機名稱。例如,輸入: set-location c:
取得環境變數
-------------------------- 範例 1 --------------------------
這個命令會列出目前工作階段中的所有環境變數:
get-childitem -path env:
您可以從任何的 Windows PowerShell 磁碟機執行此命令。
-------------------------- 範例 2 --------------------------
這個命令會取得 WINDIR 環境變數:
get-childitem -path env:windir
-------------------------- 範例 3 --------------------------
這個命令會取得目前工作階段中所有環境變數的清單,然後依照名稱進行排序:
get-childitem | sort-object -property name
依據預設,環境變數會依 Windows PowerShell 找到它們時的順序顯示。這個命令是在 Env: 磁碟機中提交。 當您從其他磁碟機執行這個命令時,請新增值為 Env: 的 Path 參數。
建立新的環境變數
-------------------------- 範例 1 --------------------------
這個命令會建立值為 Non-Admin 的 USERMODE 環境變數:
new-item -path . -name USERMODE -value Non-Admin
因為目前的位置是 Env: 磁碟機,所以 Path 參數的值是點 (.)。該點代表目前位置。 如果目前的位置不是 Env: 磁碟機,Path 參數值就會是 Env:。
顯示環境變數的屬性和方法
-------------------------- 範例 1 --------------------------
這個命令會使用 Get-ChildItem Cmdlet 來取得所有環境變數:
get-childitem -path env: | get-member
管線運算子 (|) 會將結果傳送至 Get-Member,再由後者顯示物件的方法和屬性。 當您經由管道將物件的集合 (例如 Env: 磁碟機中的環境變數集合) 輸出至 Get-Member 時,Get-Member 就會個別評估集合中的每個物件。然後,Get-Member 會傳回它所找到之每種物件類型的相關資訊。如果所有物件都屬於同一類型,則傳回單一物件類型的相關資訊。在這個範例中,所有的環境變數都是 DictionaryEntry 物件。 若要取得 DictionaryEntry 物件集合的相關資訊,請使用 Get-Member 的 InputObject 參數。例如,輸入: get-member -inputobject (get-childitem env:) 當您使用 InputObject 參數時,Get-Member 就會評估集合,而非評估集合中的物件。
-------------------------- 範例 2 --------------------------
這個命令會列出 WINDIR 環境變數的屬性值:
get-item env:windir | format-list -property *
它會使用 Get-Item Cmdlet 來取得代表 WINDIR 環境變數的物件。管線運算子 (|) 會將結果傳送至 Format-List 命令。該命令會使用 Property 參數搭配萬用字元 (*) 來格式化並顯示 WINDIR 環境變數的所有屬性值。
變更環境變數的屬性
-------------------------- 範例 1 --------------------------
這個命令會使用 Rename-Item Cmdlet,將您所建立的 USERMODE 環境變數名稱變更為 USERROLE:
rename-item -path env:USERMODE -newname USERROLE
這項變更會影響到 DictionaryEntry 物件的 Name、Key 和 PSPath 等屬性。 請勿變更系統所使用的環境變數名稱。雖然這些變更只會影響目前的工作階段,但是它們可能會造成系統或程式執行錯誤。
-------------------------- 範例 2 --------------------------
這個命令會使用 Set-Item Cmdlet,將 USERROLE 環境變數的值變更為 Administrator:
set-item -path env:USERROLE -value Administrator
複製環境變數
-------------------------- 範例 1 --------------------------
這個命令會將 USERROLE 環境變數的值複製到 USERROLE2 環境變數:
copy-item -path env:USERROLE -destination env:USERROLE2
刪除環境變數
-------------------------- 範例 1 --------------------------
這個命令會從目前的工作階段中刪除 USERROLE2 環境變數:
remove-item -path env:USERROLE2
您可以在任何的 Windows PowerShell 磁碟機上執行此命令。如果您的位置是在 Env: 磁碟機上,就可以在路徑中省略磁碟機名稱。
-------------------------- 範例 2 --------------------------
這個命令會刪除 USERROLE 環境變數。
clear-item -path env:USERROLE