Короче после обрезания что то такое вот осталось
https://pastebin.com/GaWyMYeV . Может где ошибся, т.к. чутка перерисовал
Суть - есть 1 модуль с 1 командой, которой передается 2 параметра - обязательный Command (что делаем) и опциональный Data (с чем делаем)
Создаем сколько-там-нужно инстансов PSInstance с одинаковыми параметрами ( на вход передается папка с файлом-модулем и обьект для синхронизации инстансов )
Для модуля есть некоторая переменная $MCD ( Module Concurrent Dictionary ), которая экспортированна из c# в PowerShell и является общей для обеих сред и общей для всех PSInstance И всех PowerShell-ов в ней
Нужно для синхронизации внутренних данных модуля если он работает в нескольких инстансах. В PowerShell она Constant AllScope, это значит что ее нельзя удалить ( но добавлять элементы и удалять элементы можно )
Секция // Override ExecutionPolicy работает как то странно, по другому не получилось. Такое чувство, что параметр ExecutionPolicy что-то вроде динамического и стандартно не существует (vscode про него не знает и в Assembly он судя по всему не описан), потому так странно сделано. Вероятно от версии PowerShell наличие зависит\