Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PowerShell中将环境变量设置为空字符串_Powershell_Environment Variables - Fatal编程技术网

在PowerShell中将环境变量设置为空字符串

在PowerShell中将环境变量设置为空字符串,powershell,environment-variables,Powershell,Environment Variables,我正在尝试将PowerShell中的环境变量设置为空字符串。注意,我不想取消设置环境变量;我想把它放好,但它是空的。但是,如果仅将环境变量设置为空字符串,PowerShell将完全删除该环境变量。我尝试了以下方法: $ENV:VAR='' $ENV:VAR=[String]::Empty $ENV:VAR=[NullString]::Value $ENV:VAR=$null New-Item -Path ENV:VAR -Value '' New-Item -Path ENV:VAR -Valu

我正在尝试将PowerShell中的环境变量设置为空字符串。注意,我不想取消设置环境变量;我想把它放好,但它是空的。但是,如果仅将环境变量设置为空字符串,PowerShell将完全删除该环境变量。我尝试了以下方法:

$ENV:VAR=''
$ENV:VAR=[String]::Empty
$ENV:VAR=[NullString]::Value
$ENV:VAR=$null
New-Item -Path ENV:VAR -Value ''
New-Item -Path ENV:VAR -Value [string::Empty]
所有这些(最后一个除外)都导致变量不出现在
Get ChildItem-path ENV:
的输出中。最后一个将环境变量设置为文本字符串
[string::Empty]
,这绝对不是我想要的

完整性:

$PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      0      10586  117
我可以看到有可能有一个空的环境变量,因为我有几个:

ConEmuANSI                     ON
ConEmuAnsiLog
ConEmuArgs
ConEmuArgs2
ConEmuBackHWND                 0x00F40BFC


仅供参考,我实际上试图将
DOCKER\u TLS\u VERIFY
环境变量设置为空字符串,因为DOCKER compose将缺少该变量视为表示我要进行TLS验证,并且我使用的DOCKER主机已禁用TLS。我已经暂时放弃并更换了shell。

你应该在另一个网站上查看以下帖子。根据它的说法,Docker忽略了值
Docker\u TLS\u VERIFY
,并将其存在本身作为一种开/关开关。如果您的脚本中有它,它将被打开,如果您删除它,DLS将被禁用


我发现了同样的问题。环境变量似乎有一种特殊的行为,即通过将它们设置为空字符串来删除它们

这用于将局部变量设置为空字符串:

$p = [string]$null
$p.getType()
但是,如果您使用环境变量尝试相同的操作,它将不起作用:

$Env:p = [string]$null
$Env:p.getType()
根据这个网站()的说法,将环境变量设置为空白字符串是删除它的指定方法


我认为这可能是从DOS处理环境变量的旧方法继承下来的行为。

这解决了什么问题(为什么需要它)?不确定Docker会如何处理它,但可以通过将其设置为非打印字符将其设置为“空”字符串。例如,一个'tab':
Set Item-Path ENV:VAR-Value“`t”
@boxdog使Docker感到困惑,不幸的是:回溯(最近一次调用):Docker.errors.TLSParameterError:证书和密钥文件的路径必须通过客户端配置参数提供。TLS配置应映射Docker CLI客户端配置。有关API的详细信息,请参阅。感谢您的建议,请尝试以下操作:[String[]]$ENV:VAR=$Null或[String[]]$ENV:VAR=”“另外,您是否尝试过设置DOCKER_TLS_VERIFY=$False