Powershell вообще не поддерживает многопоточность.Мне удалось разобрать его на месте, подделав его сценарием «забей и забудь», запущенным с помощью «start [powershell path] scriptname.ps1».Он запустит несколько вариантов, но вы не сможете получить от них данные, не выполнив окончательный запуск с помощью базы данных или другого механизма передачи сообщений.Отслеживать, когда дочерние процессы завершаются, тоже сложно.
cmd /c "start /min /low C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command .\evtlogparse.ps1 "
В вашем случае, когда вы устанавливаете строку SQL как часть цикла foreach, вы можете попытаться поместить код обновления БД во вторуюсценарий, который вы запускаете.Потенциально у вас будет много разных процессов, пытающихся обновить одну и ту же таблицу базы данных, поэтому вероятность проблем с синхронизацией довольно велика.
Кроме того, поскольку вы запускаете новые пустые экземпляры PowerShell, вы собираетесь съесть много памяти, чтобы она заработала.Цикл foreach может быть просто быстрее, чем запускать кучу процессов.
Итак, это можно сделать, но это совсем не похоже на красивое.