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

variable expansion inside namespace-qualified variable name

问题

我想执行参数变量评估。要评估的变量名称由字符串连接构成 - 来自 namespace 部分和变量中定义的 name 部分。示例: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...}

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

(ls env:$var).Value

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

(cat env:$var)