about_Environment_Variables

適用於: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

主題

about_Environment_Variables

簡短描述

說明如何在 Windows PowerShell® 中存取 Windows 環境變數。

詳細描述

環境變數會儲存作業系統環境的相關資訊。這些資訊包括作業系統路徑、作業系統所用處理器數目,以及暫存資料夾位置等詳細資料。

環境變數會儲存作業系統和其他程式所使用的資料。例如,WINDIR 環境變數包含 Windows 安裝目錄的位置。程式可以查詢此變數的值,以判斷 Windows 作業系統檔案的所在位置。

Windows PowerShell 可讓您檢視及變更 Windows 環境變數,包括在登錄中設定的變數,以及為特定工作階段所設定的變數。Windows PowerShell 環境提供者讓檢視及變更環境變數變得輕鬆,藉此簡化了這項程序。

不同於 Windows PowerShell 中其他類型的變數,子工作階段會繼承環境變數及其值,例如本機背景工作,以及模組成員執行的工作階段。這使得環境變數非常適合用來儲存父工作階段和子工作階段都需要的值。

WINDOWS POWERSHELL 環境提供者

Windows PowerShell 環境提供者可讓您在 Windows PowerShell 磁碟機 (Env: 磁碟機) 的 Windows PowerShell 中存取 Windows 環境變數。此磁碟機看起來很像檔案系統磁碟機。若要前往 Env:磁碟機,請輸入:

  Set-Location Env:

然後,若要顯示 Env: 磁碟機的內容,請輸入:

  Get-ChildItem

您可以從任何其他 Windows PowerShell 磁碟機檢視 Env: 磁碟機中的環境變數,並且可以進入 Env:磁碟機來檢視及變更環境變數。

環境變數物件

在 Windows PowerShell 中,每個環境變數都是以物件 (也就是 System.Collections.DictionaryEntry 類別的執行個體) 來表示。

在每個 DictionaryEntry 物件中,環境變數的名稱是字典索引鍵。變數的值是字典值。

若要在 Windows PowerShell 中顯示環境變數,請取得代表變數的物件,然後顯示物件屬性的值。當您在 Windows PowerShell 中變更環境變數時,請使用與 DictionaryEntry 物件相關聯的方法。

若要在 Windows PowerShell 中顯示代表環境變數之物件的屬性和方法,請使用 Get-Member cmdlet。例如,若要顯示 Env: 磁碟機中所有物件的方法和屬性,請輸入:

  Get-Item -Path Env:* | Get-Member

顯示環境變數

您可以使用包含 Item 名詞的 cmdlet (Item 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

您也可以使用 Windows PowerShell 中的運算式剖析器,藉此在不使用 cmdlet 的情況下,顯示及變更環境變數的值。若要顯示環境變數的值,請使用下列語法:

  $Env:<variable-name>

例如,若要顯示 WINDIR 環境變數的值,請在 Windows PowerShell 命令提示字元輸入下列命令:

  $Env:windir

在這個語法中,貨幣符號 ($) 表示變數,而磁碟機名稱表示環境變數。

變更環境變數

若要對環境變數進行永久變更,請使用 [控制台] 中的 [系統] ([進階] 索引標籤或 [進階系統設定] 項目),將變更儲存在登錄中。

當您在 Windows PowerShell 中變更環境變數時,該變更只會影響目前的工作階段。此行為類似 Windows 環境中的 Set 命令行為,以及 UNIX 環境中的 Setenv 命令行為。

您也必須要有變更變數值的權限。如果您嘗試變更值,但沒有足夠的權限,命令將會失敗,而 Windows PowerShell 會顯示錯誤。

您可以在不使用 cmdlet 的情況下變更變數值,方法是使用下列語法:

          $Env:<variable-name> = "<new-value>"

例如,若要將 ";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 設定檔。

例如,若要將 C:\Temp 目錄新增至每個 Windows PowerShell 工作階段中的 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。

儲存喜好設定的環境變數包括:

PSEXECUTIONPOLICYPREFERENCE

儲存為目前工作階段所設定的執行原則。唯有當您為單一工作階段設定執行原則時,這個環境變數才會存在。您可以使用兩種不同的方式來執行此操作。

-- 在命令列中使用 PowerShell.exe 來啟動工作階段,並使用其 ExecutionPolicy 參數來為工作階段設定執行原則。

-- 使用 Set-ExecutionPolicy cmdlet。搭配 "Process" 的值使用 Scope 參數。

如需詳細資訊,請參閱 about_Execution_Policies。

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:\Program Files\Fabrikam\Modules" 目錄新增至 PSModulePath 環境變數的值,請輸入:

                $Env:PSModulePath = $Env:PSModulePath + ";C:\Program Files\Fabrikam\Modules"

命令中的分號 (;) 會分隔新路徑與清單中該路徑前面的路徑。

若要在每個工作階段中變更 PSModulePath 的值,請將上述命令新增至您的 Windows PowerShell 設定檔,或使用 Environment 類別的 SetEnvironmentVariable 方法。

下列命令會使用 GetEnvironmentVariable 方法,取得 PSModulePath 的電腦設定和 SetEnvironmentVariable 方法,以將 C:\Program Files\Fabrikam\Modules 路徑新增至該值。

$path = [System.Environment]::GetEnvironmentVariable("PSModulePath", "Machine")
            [System.Environment]::SetEnvironmentVariable("PSModulePath", $path + `
               ";C:\Program Files\Fabrikam\Modules", "Machine")

若要將路徑新增至使用者設定,請將目標值變更為 User。

            $path = [System.Environment]::GetEnvironmentVariable("PSModulePath", "User")
            [System.Environment]::SetEnvironmentVariable("PSModulePath", $path + `
               ";$home\Documents\Fabrikam\Modules", "User")

如需 System.Environment 類別的方法詳細資訊,請參閱 MSDN 中的<Environment 方法>,網址為:https://go.microsoft.com/fwlink/?LinkId=242783。

您也可以新增命令,將該值變更為您的設定檔,或是使用 [控制台] 中的 [系統],變更登錄中 PSModulePath 環境變數的值。

如需詳細資訊,請參閱 about_Modules。

另請參閱

環境 (提供者)

about_Modules