通过变量进行PowerShell字符串插值

时间:2014-04-08 16:17:23

标签: powershell

以下代码按预期工作:

'John' | % { "$_ $_" }
> John John

但是,我无法找到一种将字符串$_ $_存储在变量中的方法,该变量稍后在管道中使用:

$f = '$_ $_'
'John' | % { $f }
> $_ $_

我将如何"插入"一个变量,而不是使用双引号字符串?

2 个答案:

答案 0 :(得分:5)

您可以使用大括号括起来定义PowerShell ScriptBlock,然后使用.调用运算符执行它。

$f = { $_ $_ }
'John' | % { . $f }

输出如下:

John
John

或者,如果你想要一个字符串(比如你的初始问题),你可以这样做:

$f = { "$_ $_" }
'John' | % { . $f };

输出如下:

John John

答案 1 :(得分:2)

答案是

'John' | % { $ExecutionContext.InvokeCommand.ExpandString($f) }
> John John

感谢Bill_Stewart回答PowerShell Double Interpolation