在PowerShell中返回多个值

时间:2017-11-21 17:08:09

标签: powershell powershell-v5.0 powershell-workflow

鉴于以下脚本,如何将两个变量返回到主代码?

我尝试了return命令,但显示错误。请在下面找到代码和错误消息。

代码:

workflow Test-MultiReturnVals
{
  parallel
  {
    $a = @(Test-Connection 8.8.8.8 -count 3)  
    $b = @(Test-Connection 4.2.2.1 -count 3)
    return $a, $b
  }
}
$c, $d = Test-MultiReturnVals
$c

错误:

Microsoft.PowerShell.Utility\Write-Error : The workflow was terminated by a
Terminate activity.
At RunScripts:9 char:9
+
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WorkflowReturnException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Workflow.WorkflowReturnException,Microsoft.PowerShell.Commands.WriteErrorCommand
    + PSComputerName        : [localhost]

1 个答案:

答案 0 :(得分:1)

你不应该在并行块中有return语句。根据定义,并行块中的语句是同时运行的,因此在填充值之前返回(" return"是终止活动)。看看这里:https://docs.microsoft.com/en-us/powershell/module/psworkflow/about/about_parallel

要使其按您希望的方式工作,您需要在并行块之前定义变量,然后在并行块内引用这些变量,最后在最后返回变量。请注意,您需要使用$ WORKFLOW:来引用并行块内的变量。