2017-11-21 7 views
0

다음 스크립트에서 주 코드에 두 개의 변수를 반환하려면 어떻게해야합니까?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 :를 사용해야한다는 점에 유의하십시오.