【问题标题】:Return multiple values in PowerShell在 PowerShell 中返回多个值
【发布时间】:2017-11-21 17:08:08
【问题描述】:

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

我尝试了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 :工作流被终止 终止活动。 在 RunScripts:9 字符:9 + + CategoryInfo          : NotSpecified: (:) [Write-Error], WorkflowReturnException + FullyQualifiedErrorId:Microsoft.PowerShell.Workflow.WorkflowReturnException,Microsoft.PowerShell.Commands.WriteErrorCommand + PSComputerName        : [本地主机]

【问题讨论】:

  • 您使用工作流有什么特别的原因吗?如果你只是想并行运行一些东西,你最好使用后台作业。

标签: powershell powershell-5.0 powershell-workflow


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2012-11-03
    • 2021-07-05
    相关资源
    最近更新 更多