如果當前終端中的路徑已更改,是否有辦法呼叫系統路徑?IE:
$env:Path = "C:\some new path"
#some coding that requires a different path set up
$env:Path = $defaultPath #would have to define $defaultPath by calling the system default path
uj5u.com熱心網友回復:
使用以下命令$env:PATH從注冊表重新加載環境變數,因為將來的會話會看到它(假設沒有進一步的相關注冊表更新)。
如果您當前的會話沒有進行任何相關的注冊表更新,這與獲取在會話啟動時生效的值相同 - 除非通過$PROFILE腳本進行任何動態添加:
$env:PATH = [Environment]::GetEnvironmentVariable('Path', 'Machine'),
[Environment]::GetEnvironmentVariable('Path', 'User') -join ';'
筆記:
行程的
$env:PATH有效值是機器級和用戶級注冊表項的組合值,機器級定義優先,如上面的兩個 .NET API 呼叫所示。請注意,底層注冊表位置 -
HKEY_LOCAL_MACHIN\System\CurrentControlSet\Control\Session Manager\Environment和HKEY_CURRENT_USER\Environment- 是REG_EXPAND_SZ注冊表值,即它們可以根據其他環境變數定義,例如%SystemRoot%和%ProgramFiles%。上面的 .NET API 呼叫 - 使用
[Environment]::GetEnvironmentVariable()- 以及 PowerShellGet-ItemProperty和Get-ItemPropertyValuecmdlet擴展(插入)此類參考并回傳逐字路徑 - 這也是默認情況下新行程看到的內容。
鑒于上述情況,在會話啟動時可靠地檢索有效值的唯一方法是在啟動時將其保存在變數中。
uj5u.com熱心網友回復:
它仍然存盤在注冊表中,因此您可以查詢它:
- 位于:
HKLM:\System\CurrentControlSet\Control\Session Manager\Environment
$key = "HKCU:\Environment",
"HKLM:\System\CurrentControlSet\Control\Session Manager\Environment"
(Get-ItemPropertyValue -Path $key -Name Path) -Join ';'
使用Get-ItemPropertyValue(如Mklement建議的那樣)查詢密鑰將為您提供屬性的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/468983.html
