Я пытаюсь написать сценарий powershell с помощью C# в своем приложении. проблема в том, что скрипт не выполняет работу, если я запускаю его с помощью С#, но выполняет работу, если я запускаю его вручную.
Это скрипт: DISM /online /Enable-Feature /Featurename:NetFx3 /All
Сценарий включает Framwork 3.5 на сервере Windows. Источник
Мой код:
NuGet: System.Management.Automation
using (PowerShell PowerShellInstance = PowerShell.Create())
{
PowerShellInstance.AddScript("DISM /online /Enable-Feature /Featurename:NetFx3 /All ");
// begin invoke execution on the pipeline
IAsyncResult result = PowerShellInstance.BeginInvoke();
// do something else until execution has completed.
// this could be sleep/wait, or perhaps some other work
while (result.IsCompleted == false)
{
Console.WriteLine("Waiting for pipeline to finish...");
Thread.Sleep(1000);
// might want to place a timeout here...
}
Console.WriteLine("Finished!");
}
Я использовал примеры из здесь
Примечание: мое приложение запускается от имени администратора.
в чем ошибка? попробуйте обернуть его блоком try-catch.
Нет ошибки, она не включает функцию 3.5. Через несколько секунд консоль говорит "готово"
Проверьте
PowerShellInstance.HadErrors
. Если это так, проверьтеPowerShellInstance.InvocationStateInfo.Reason
для исключения, если это нуль, проверьтеPowerShellInstance.Streams.Error
для незавершающих записей об ошибках. Если ни один из них не дает нужной информации,PowerShellInstance.EndInvoke(result)
выдаст вывод команды.