【发布时间】:2018-04-27 14:16:53
【问题描述】:
我正在尝试在 PowerShell 中将环境变量设置为空字符串。请注意,我不想 unset 环境变量;我想要它设置但为空。但是,如果您只是将环境变量设置为空字符串,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_TLS_VERIFY 环境变量设置为空字符串,因为 docker-compose 将该变量的缺失视为表示我要进行 TLS 验证,而 Docker 主机我我正在使用已禁用 TLS。我暂时放弃换壳了。
【问题讨论】:
-
这解决了什么问题(为什么需要它)?
-
不确定 Docker 会怎么做,但您可以通过将其设置为非打印字符来将其设置为“空”字符串。例如,一个“标签”:
Set-Item -Path ENV:VAR -Value "`t" -
@boxdog 只是让 Docker 感到困惑,不幸的是: Traceback(最近一次调用最后一次):
docker.errors.TLSParameterError: 证书和密钥文件的路径必须通过 client_config 参数提供。 TLS 配置应该映射 Docker CLI 客户端配置。有关 API 详细信息,请参阅docs.docker.com/engine/articles/https。不过还是谢谢你的建议 -
试试这个:[String[]]$ENV:VAR = $Null 或 [String[]]$ENV:VAR = ""
-
另外,您是否尝试过设置 DOCKER_TLS_VERIFY = $False
标签: powershell environment-variables