Start-job导致null参数

时间:2014-07-15 14:04:00

标签: powershell powershell-v2.0 start-job

我正在尝试在PowerShell v2.0中执行以下两行代码作为工作,并且遇到了麻烦。我认为我的语法正确,但是我无法做到我认为它应该做的事情,所以我显然做错了...

$report = <command line thing>
invoke-expression $report

这两行在PowerShell中有效。但是,当我尝试将它放入启动作业命令时:

start-job -scriptblock {invoke-expression $report} -argumentlist $report | wait-job | receive-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

我理解错误说我传递invoke-expression的参数是null,但是,我认为通过在$report param中传递-argumentlist,它会得到通过?

1 个答案:

答案 0 :(得分:0)

除非您执行以下操作,否则无法直接访问$report

-scriptblock {param($report) invoke-expression $report}

param($report)部分捕获通过$report传入的-ArgumentList变量,并使其可在scriptblock中使用。