繁体   English   中英

无法删除 PowerShell 环境变量

[英]Cannot remove PowerShell environment variables

我之前在 Windows PowerShell 中设置了两个环境变量HTTP_PROXYHTTPS_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 ,重新定义了它们。

    • 要排除这种可能性,请使用 Windows 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM