我正在尝试在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
,它会得到通过?
答案 0 :(得分:0)
除非您执行以下操作,否则无法直接访问$report
:
-scriptblock {param($report) invoke-expression $report}
param($report)
部分捕获通过$report
传入的-ArgumentList
变量,并使其可在scriptblock中使用。