Using runspaces and runspace pools
Runspaces and runspace pools are an efficient way of asynchronously executing PowerShell code. Runspaces are far more efficient than jobs created by Start-Job
as they execute in the same process. The main disadvantage is complexity: PowerShell does not include native commands to simplify working with these classes.
These days, the lack of native tooling is less of a problem. PowerShell 7 includes several alternatives that execute code in efficient runspaces, including ForEach-Object
with the -Parallel
parameter, and the Start-ThreadJob
command.
In addition to these, the (now older) PoshRSJob
module remains available on the PowerShell Gallery: https://www.powershellgallery.com/packages/PoshRSJob.
The PoshRSJob
module is very mature and has a rich set of features. It was the most frequently recommended module, providing an alternative to the Start-Job
command.
When more flexibility or efficiency is needed, it is helpful to understand...