【发布时间】:2018-04-18 12:21:49
【问题描述】:
我想通过 PowerShell 读取名为“[TF]MYVAR”的环境变量。但是以下语法不起作用:
$env:[TF]MYVAR
它会产生以下错误:
数组索引表达式缺失或无效。
添加退出标记 (-> "$env:[TF]MYVAR") 也无济于事。
【问题讨论】:
标签: powershell environment-variables
我想通过 PowerShell 读取名为“[TF]MYVAR”的环境变量。但是以下语法不起作用:
$env:[TF]MYVAR
它会产生以下错误:
数组索引表达式缺失或无效。
添加退出标记 (-> "$env:[TF]MYVAR") 也无济于事。
【问题讨论】:
标签: powershell environment-variables
方括号会混淆命令行解析器。尝试备用变量语法:
${<variable name>}
另见Get-Help about_Variables。
正如下面的@PetSerAl 所述,由于命令行解析器如何处理转义方括号字符,您需要这样做:
${env:``[TF``]MYVAR}
您也可以使用the native .Net methods,无需转义即可:
[System.Environment]::GetEnvironmentVariable('[TF]MYVAR')
【讨论】:
env:[TF]MYVAR 的变量的值,但我们正在Env: 驱动器中寻找[TF]MYVAR 项的值。我发现最不冗长的东西是gc env:'`[TF`]MYVAR',但应该有更好的东西。
${ } 语法在 PowerShell 中有多种用途。请阅读the Get-Help entry for about_Variables under the heading for variables with special characters。
env:[TF]MYVAR 的值,它需要是${variable:env:[TF]MYVAR}。
cmd shell 并发出set [TF]MYVAR=3,然后执行powershell 并输入${env:[TF]MYVAR} 什么也没有。顺便说一下,这是 PowerShell 5.1。 @PetSerAl:情节变厚了,因为是的,这确实读取了变量,而显然${env:[TF]MYVAR} 读取...什么都没有。
${env:``[TF``]MYVAR} 才能正常工作。