![](/img/trans.png)
[英]Cannot resolve environment variables in Powershell with periods “.” in them
[英]Cannot remove PowerShell environment variables
我之前在 Windows PowerShell 中设置了两个环境变量HTTP_PROXY
和HTTPS_PROXY
。 现在我想删除它们但是我发现无论我如何键入命令,下次我打开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
但它们都不起作用。
$env:HTTP_PROXY=''
$env:HTTPS_PROXY=''
Set-Location Env:
rm HTTP_PROXY
rm HTTPS_PROXY
这些语句仅从当前会话中删除指定的环境变量(请注意,在类 Unix平台上,您必须使用别名ri
或 cmdlet 的全名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
(相当于 C# [1] 中的null
)、 "`0"
(单个NUL
( 0x0
) 字符) .)
如果环境变量在以后的会话中意外仍然出现,则有两个潜在原因:
您直接从旧会话启动了新会话,例如使用Start-Process powershell.exe
- 在这种情况下,当前会话的环境变量由新会话继承。
您的配置文件中可能有代码,特别是$PROFILE
,重新定义了它们。
Run
对话框 ( WinKey-R ) 并提交powershell -noprofile
。 [1] PowerShell 确实有一个$null
常量,它通常等效于 C# 的null
,但在字符串上下文中,PowerShell 强制$null
值为''
(空字符串)。 因此,为了将真正的null
值传递给string
类型的 .NET 方法,需要[NullString]::Value
单例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.