Background jobs can help speed up your scripts. If your scripts consist of a number of separate tasks that also could run in parallel, then background jobs could be a good idea.
Background jobs are efficient if (a) the task takes at least 3-4 seconds and (b) the task does not return excessive amounts of data.
Here is a basic background job scenario consisting of 3 tasks. They would roughly take 23 seconds if run consecutively. With background jobs, they only take 11 seconds (the time of the longest single task) plus some overhead time.
#requires -Version 2 # three things you want to do in parallel # for illustration, Start-Sleep is used # remove Start-Sleep and replace with real-world # tasks $task1 = { Start-Sleep -Seconds 4 dir $home } $task2 = { Start-Sleep -Seconds 8 Get-Service } $task3 = { Start-Sleep -Seconds 11 'Hello Dude' } $job1 = Start-Job -ScriptBlock $task1 $job2 = Start-Job -ScriptBlock $task2 $result3 = & $task3 Wait-Job -Job $job1, $job2 $result1 = Receive-Job -Job $job1 $result2 = Receive-Job -Job $job2 Remove-Job $job1, $job2