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

Tah*_*san 0 powershell

以下代码按预期工作:

'John' | % { "$_ $_" }
> John John
Run Code Online (Sandbox Code Playgroud)

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

$f = '$_ $_'
'John' | % { $f }
> $_ $_
Run Code Online (Sandbox Code Playgroud)

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

Tre*_*van 5

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

$f = { $_ $_ }
'John' | % { . $f }
Run Code Online (Sandbox Code Playgroud)

输出如下:

John
John
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要一个字符串(如您的初始问题),您可以:

$f = { "$_ $_" }
'John' | % { . $f };
Run Code Online (Sandbox Code Playgroud)

输出如下:

John John
Run Code Online (Sandbox Code Playgroud)