0

我正在尝试在 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

$report我理解这个错误是说我传递调用表达式的参数为空,但是,我认为通过传递-argumentlist参数,它会通过吗?

4

1 回答 1

0

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

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

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

于 2014-07-15T14:52:19.900 回答