There are multiple options on how to implement multi-threading in Powershell. They are all well known to engineers:
- Powershell Jobs
- Powershell Workflows
But there is another one, which is not quite popular (because of it's complexity), but very powerfull: .NET runspaces. While it's quite difficult to implement, it don't have main disadvantage of native Powershell ways - we will not spawn tons of powershell.exe processes. All work will be done within a single process and that will highly increase overall script performance.
I will not tell you about theory (mainly because I don't clearly understand details), but will give you some insights and script templates to start moving.