Мое основное программирование выполняется на Python, и я хочу вызывать написанные мной собственные командлеты Powershell. Добавил свой файл .psm1 в $PSModulePath, и мои командлеты всегда загружаются.
И я -NoProfile и -NoLogo вызываю pwsh cmd немного быстрее. Что-то вроде
cmd = ['pwsh', '-NoLogo', '-NoProfile', '-Command', cmdToRun]
process = Popen(cmd, stderr=PIPE, stdout=PIPE)
Но возврат/обработка по-прежнему занимает более 5 секунд.
Кто-нибудь знает, есть ли другие улучшения для еще более быстрого запуска сценариев PowerShell? ТИА






Python не может размещать PowerShell внутри процесса, поэтому вы не можете избежать дорогостоящего создания дочернего процесса PowerShell с помощью pwsh , PowerShell (Core) 7 CLI (то же самое применимо аналогично powershell.exe, Windows PowerShell). интерфейс командной строки).
-NoProfile имел бы значение только в том случае, если бы присутствовали большие/медленно выполняющиеся файлы $PROFILE, а -NoLogo является избыточным, как это подразумевается -Command.
Если вам необходимо повторно выполнять вызовы PowerShell при одном вызове вашего приложения, вы можете смягчить влияние на производительность, запустив процесс PowerShell CLI в режиме REPL, передав -Command -, а затем подавая ему команды по требованию через стандартный ввод, завершая каждый из них двумя символы новой строки (чтобы обеспечить распознавание конца команды), аналогично подходу, описанному в этом посте.
В этом случае вы понесете штраф в виде создания дочернего процесса PowerShell только один раз за запуск вашего приложения, перед отправкой первой команды PowerShell.
Рад слышать, что это помогло, @scorpion35.
Красава, спасибо за подробное объяснение! Глядя на это