Powershell 如何将变量传递到启动作业命令

Powershell 如何将变量传递到启动作业命令,powershell,Powershell,我有一个对象数组,其中一个作业保存在一个变量中。我循环遍历每个对象并尝试使用start job,但无法传递变量 我的例子是: $command = "whoami" Start-Job -Name TESTJOB -ScriptBlock {$command} Id Name PSJobTypeName State HasMoreData Location Command -- ----

我有一个对象数组,其中一个作业保存在一个变量中。我循环遍历每个对象并尝试使用start job,但无法传递变量

我的例子是:

$command = "whoami" Start-Job -Name TESTJOB -ScriptBlock {$command} Id Name PSJobTypeName State HasMoreData Location Command -- ---- ------------- ----- ----------- -------- ------- 16495 TESTJOB BackgroundJob Running True localhost $command $command=“whoami” 开始作业-名称TESTJOB-脚本块{$command} Id名称PSJobTypeName状态HasMoreData位置命令 -- ---- ------------- ----- ----------- -------- ------- 16495 TESTJOB BackgroundJob运行True localhost$命令 如您所见,该命令显示为
$Command
,而不是
whoami

这意味着我无法获得所需的输出

我不必使用
Start Job
,但我正在尝试使用类似“线程”的方法,因为数组中的某些作业将比其他作业花费更长的时间


您能建议最好的方法吗?

这里需要解决的两件事:使用
using:
前缀从调用范围解析
$command
的值,然后使用
&
调用操作符实际调用
$command
作为命令:

Start-Job -ScriptBlock {& $using:command}

有关
$using:
作用域(包括PSv2替代方案)的更多信息,请参阅