2017-11-21 29 views
0

次のスクリプトでは、メインコードに2つの変数を返すにはどうすればよいですか?PowerShellで複数の値を返す

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] 
+0

ワークフローを使用する特別な理由はありますか?並行して実行するだけなら、おそらくバックグラウンドジョブを使うほうが良いでしょう。 –

答えて

1

あなたは、並列ブロック内のreturn文を持つべきではありません。定義上、並列ブロック内の文は同時に実行されるため、値が移入される前にリターンします(「return」は終了アクティビティです)。 https://docs.microsoft.com/en-us/powershell/module/psworkflow/about/about_parallel

パラレルブロックの前に変数を定義し、それらの変数をパラレルブロック内で参照し、最後に変数を返す必要があります。並列ブロック内の変数を参照するには、$ WORKFLOW:を使用する必要があることに注意してください。

関連する問題