Я хочу добавить возможности PowerShell к программе C# и Я включил сборку system.managment.automation.dll
в качестве ссылки. я нашел на StackOverflow два способа вызова scrit PowerShell из C#:Сценарий Powershell, использующий system.managment.automation, все равно будет работать после того, как его хозяин C# умрет?
Использование пространств выполнения:
Не с использованием пространств выполнения:
PowerShell powerShell = PowerShell.Create(); powerShell.AddScript("my script"); powerShell.Invoke();
Согласно this website , похоже, экземпляр Powershell привязан к его узлу C#.
Рабочая среда Powershell вызывается как рабочая область и по умолчанию обрабатывает команды синхронно и доставляет результаты обработки в основное приложение, чтобы они могли быть возвращены пользователю.
Кроме того, скрипт PowerShell использует встроенную system.managment.automation.dll
сборку и не общесистемные один, так что сценарий будет логически остановить с C# хоста.
Выполняется ли сценарий Powershell после закрытия пользователем моей программы? Как насчет двух методов?
PS: Я хочу поддерживать PowerShell v2.
Когда вы делаете 'powerShell = PowerShell.Create()' и 'powerShell.Invoke()', пространство неявно создается. Это пространство будет «умирать» с хост-приложением –
Итак, оба метода одинаковы, первый - это только сжатая версия второго? – cgcmake
Я бы сказал, что первое менее кратким (более подробный код), но да, они одинаковые –