【问题标题】:Reading environment variable via PowerShell通过 PowerShell 读取环境变量
【发布时间】:2018-04-18 12:21:49
【问题描述】:

我想通过 PowerShell 读取名为“[TF]MYVAR”的环境变量。但是以下语法不起作用:

$env:[TF]MYVAR

它会产生以下错误:

数组索引表达式缺失或无效。

添加退出标记 (-> "$env:[TF]MYVAR") 也无济于事。

【问题讨论】:

    标签: powershell environment-variables


    【解决方案1】:

    方括号会混淆命令行解析器。尝试备用变量语法:

    ${<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',但应该有更好的东西。
    • @JeroenMostert ${ } 语法在 PowerShell 中有多种用途。请阅读the Get-Help entry for about_Variables under the heading for variables with special characters
    • @JeroenMostert 要获取变量env:[TF]MYVAR 的值,它需要是${variable:env:[TF]MYVAR}
    • 打开cmd shell 并发出set [TF]MYVAR=3,然后执行powershell 并输入${env:[TF]MYVAR} 什么也没有。顺便说一下,这是 PowerShell 5.1。 @PetSerAl:情节变厚了,因为是的,这确实读取了变量,而显然${env:[TF]MYVAR} 读取...什么都没有。
    • @BaconBits 在这种情况下需要${env:``[TF``]MYVAR} 才能正常工作。
    猜你喜欢
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2020-05-21
    • 2015-07-05
    相关资源
    最近更新 更多