PowerShell中无法回显存储在变量中的带空格环境变量
解决PowerShell中通过变量引用带空格环境变量的问题
这个问题我之前也碰到过,PowerShell的变量解析规则在处理带空格的环境变量名时确实容易踩坑!咱们先理清楚问题所在,再给出几种可行的解决方案:
为什么echo env:${variable}不行?
当你直接写env:${variable}时,PowerShell并不会把${variable}的值(也就是"My Var")当作环境变量名去解析,而是会把整个env:${variable}当成一个字面量路径尝试访问,自然找不到对应的环境变量,所以会报错或者返回空。
正确的解决方案
下面几种方法都能正确读取到带空格的环境变量:
1. 使用嵌套变量表达式语法
这是最直接的写法,利用PowerShell的变量扩展特性,把变量名嵌套到env:的变量表达式里:
$variable = "My Var" # 直接输出环境变量值 ${env:$variable} # 用echo(Write-Output的别名)输出也可以 echo ${env:$variable}
2. 使用Get-Content命令
把env:驱动器和变量拼接成路径字符串,用Get-Content读取:
$variable = "My Var" Get-Content "env:$variable"
3. 使用Get-Item命令
先获取环境变量对应的项,再读取它的Value属性:
$variable = "My Var" (Get-Item "env:$variable").Value
验证测试
你可以先设置好测试环境变量,再验证这些写法:
# 先设置带空格的环境变量 $env:My Var = "test" # 用任意一种方案测试,都会返回"test" ${env:$variable}
内容的提问来源于stack exchange,提问作者Steve Kennedy
相关产品推荐
相关产品推荐

