名称空间限定变量名称内的变量扩展

时间:2016-01-07 14:33:38

标签: powershell variables expansion

问题

我想进行参数变量评估。要评估的变量名称由字符串连接构成 - 来自名称空间部分和在变量中定义的名称部分。示例:env:$var,其中$var的值为"OS"。但是,在使用表达式

${env:OS}

给出预期值Windows_NT,即构造

$var="OS"
${env:$var}

是一个空值表达式。

动机

我并没有真正参与环境变量的价值(但这是最简单的例子,我能找到)。我真正想要的是通过${c:<filename>}构造引用文件的内容。我想执行几个有条件的文件内字符串替换,并且我想使用类似于此的构造:

<identify files in a foreach>
${c:<filename>} -replace 'this', 'that' > ${c:<new filename>}

为实现这一点,我需要<filename>作为迭代器变量的值。

问题

如果$var的值为OS,如果我希望以下表达式的值为...,那么Windows_NT的值是什么?

${env:...var...}

1 个答案:

答案 0 :(得分:0)

Get-ChildItem PSDrive上使用env:并展开结果的Value

(ls env:$var).Value

编辑:正如使用Get-Content在评论中建议的@PetSerAl是一种更优雅的方法:

(cat env:$var)