powershell - 並列処理

直列

$job1 = Start-job -ScriptBlock {
    Get-Service | out-null;
    $ret=@{}
    $ret.Add("status", "finish-job1");
    return $ret;
}

$job2 = Start-job -ScriptBlock {
    Get-Service | out-null;
    $ret=@{}
    $ret.Add("status", "finish-job2");
    return $ret;
}

Get-Job | Wait-Job | Out-Null

$r1 = Receive-Job -Job $job1
$r2 = Receive-Job -Job $job2

Get-Job | Remove-Job

$result = "$($r1.status) / $($r2.status)"

Write-Host $result; # finish-job1 / finish-job2

並列

$job = {
    param(
        [string] $arg1
    )

    Get-Service | out-null;
    $ret=@{}
    $ret.Add("status", "finish-$($arg1)");
    return $ret;
}

$job1 = Start-Job -ScriptBlock $job -ArgumentList "job1"
$job2 = Start-Job -ScriptBlock $job -ArgumentList "job2"
$job3 = Start-Job -ScriptBlock $job -ArgumentList "job3"

Get-Job | Wait-Job | Out-Null

$r1 = Receive-Job -Job $job1
$r2 = Receive-Job -Job $job2
$r3 = Receive-Job -Job $job3

Get-Job | Remove-Job

$result = "$($r1.status) / $($r2.status) / $($r3.status)"

Write-Host $result; # finish-job1 / finish-job2 / finish-job3