无法将参数绑定到参数'command',因为它为null。电源外壳

sri*_*tha 1 powershell start-job

我有一个类似于以下代码的功能。它接收命令和命令参数。我必须在后台运行此命令并收集输出。但是最后一条语句让我很困惑

错误:

Cannot bind argument to parameter 'Command' because it is null.
+ CategoryInfo          : InvalidData: (:) [Invoke-Expression], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.InvokeExpre
ssionCommand
+ PSComputerName        : localhost
Run Code Online (Sandbox Code Playgroud)

码:

$cmd = 'Get-content'
$Arg = 'path to file'
$sb = "$cmd $Arg -ErrorVariable e -ErrorAction Stop"
invoke-Expression $sb #This printsoutput
$job = Start-job -ScriptBlock {Invoke-Expression $sb}
wait-job -id $job.Id
$job | Receive-job #this should print output but throwing error
Run Code Online (Sandbox Code Playgroud)

我很确定最后一行是抛出错误的那一行。

Ben*_*enH 6

$sb进入脚本块范围的另一种选择-argumentlist是使用$using:范围。(PowerShell 3+)

$cmd = 'Get-content'
$Arg = 'path to file'
$sb = "$cmd $Arg -ErrorVariable e -ErrorAction Stop"
$job = Start-job -ScriptBlock {Invoke-Expression $using:sb}
wait-job -id $job.Id
$job | Receive-job
Run Code Online (Sandbox Code Playgroud)