...
The following sample shows how to use native PowerShell jobs to run a number of JobScheduler orders in parallel and to wait for completion of all orders. As orders are executed in parallel by JobScheduler it is more effective to use asynchronous native PowerShell jobs than to wait for each native PowerShell job individually as from the above sample:
Code Block | ||||
---|---|---|---|---|
| ||||
$jobScript = { Param ( [Uri] $masterUrl, [string] $jobChain, [int] $pollInterval=10 ) Import-Module JobScheduler if ( $masterUrl ) { $js = Use-JobSchedulerMaster $masterUrl } $order = Add-JobSchedulerOrder -JobChain $jobChain While ( ( $order | Get-JobSchedulerOrder -NoCache ).StartTime ) { Start-Sleep -Seconds $pollInterval } $order | Get-JobSchedulerOrderHistory } echo "begin of test script" $jobs = @() $jobs += Start-Job -ScriptBlock $jobScript -Argumentlist localhost:4444,/some_path/some_job_chain $jobs += Start-Job -ScriptBlock $jobScript -Argumentlist localhost:4444,/some_path/some_other_job_chain $orderHistory = $jobs | Wait-Job | Receive-Job for( $i=0; $i -le $orderHistory.length; $i++ ) { echo "order '$($orderHistory[$i].id)' completed with state '$($orderHistory[$i].State)' at '$($orderHistory[$i].EndTime)'" } echo "end of test script" |
...