我之前在 Windows PowerShellHTTP_PROXY和HTTPS_PROXYWindows PowerShell 中設定了兩個環境變數。現在我想洗掉它們,但我發現無論我如何鍵入命令,下次打開PowerShell時,這兩個變數都會再次出現。
以下是我嘗試過的命令:
$env:HTTP_PROXY=''
$env:HTTPS_PROXY=''
[Environment]::SetEnvironmentVariable('HTTP_PROXY', '', 'User')
[Environment]::SetEnvironmentVariable('HTTPS_PROXY', '', 'User')
[Environment]::SetEnvironmentVariable('HTTP_PROXY', '', 'Machine')
[Environment]::SetEnvironmentVariable('HTTPS_PROXY', '', 'Machine')
Set-Location Env:
rm HTTP_PROXY
rm HTTPS_PROXY
但它們都不起作用。
uj5u.com熱心網友回復:
$env:HTTP_PROXY=''
$env:HTTPS_PROXY=''
或者:
Set-Location Env:
rm HTTP_PROXY
rm HTTPS_PROXY
這些陳述句僅從當前會話中洗掉指定的環境變數(請注意,在類 Unix平臺上,您必須使用 aliasri而不是rmcmdlet 的全名 , Remove-Item)。
如果它們是通過注冊表(在 Windows 上)持久定義的,它們將在以后的會話中重新出現。
[Environment]::SetEnvironmentVariable('HTTP_PROXY', '', 'User')
[Environment]::SetEnvironmentVariable('HTTPS_PROXY', '', 'User')
[Environment]::SetEnvironmentVariable('HTTP_PROXY', '', 'Machine')
[Environment]::SetEnvironmentVariable('HTTPS_PROXY', '', 'Machine')
這些陳述句 - 假設它們在不觸發例外的情況下執行-確實洗掉了持久定義(僅在 Windows 上)。
請注意,設定/洗掉機器級變數 (
'Machine') 需要提升(以管理員身份運行)。按照設計,以下任何值都會導致洗掉指定的環境變數:
'',[NullString]::Value(相當于nullC# [1] 中的),"`0"(單個NUL(0x0) 字符。)請注意,這些方法僅洗掉 這些變數的持久定義——當前會話中的任何定義都保持不變;到也洗掉它們,使用頂部的方法。
如果環境變數在以后的會話中意外地仍然出現,則有兩個潛在原因:
也許你開始一個新的會話直接從舊的會話,例如用
Start-Process powershell.exe-在這種情況下,當前會話的環境變數被繼承由新的會話,所以除非你已經洗掉從當前會話中的環境變數,以及,在新會看他們。您的配置檔案中可能有代碼,尤其是
$PROFILE在新會話開始時(重新)定義這些環境變數的代碼。- 要排除這種可能性,請使用 Windows
Run對話框 ( WinKey-R) 并提交powershell -noprofile,然后檢查這些變數是否仍然存在。
- 要排除這種可能性,請使用 Windows
[1] PowerShell 確實有一個$null常量,它通常等效于 C# 的null,但在字串背景關系中,PowerShell 會將$null值強制為''(空字串)。因此,[NullString]::Value需要單例才能將真正的null值傳遞給string型別化的 .NET 方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/358639.html
標籤:电源外壳
