Процесс Powershell из C# не завершаетсяC#

Место общения программистов C#
Anonymous
Процесс Powershell из C# не завершается

Сообщение Anonymous »

Я пытаюсь запустить PS-скрипт на C# с Powershell в качестве процесса, вот так:

Код: Выделить всё

 ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName =   configFile.AppSettings.Settings["PSDir"].Value.ToString() + @"\powershell.exe";
startInfo.Arguments = @"& '" + scriptPath + "'\"";
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;

Process process = new Process();
process.StartInfo = startInfo;
process.Start();

return process;
Я вызываю этот метод следующим образом:

Код: Выделить всё

        Process proc = RunPSScript(startupPath + "\\stats.ps1");
proc.WaitForExit();
Программа зависает на:

Код: Выделить всё

proc.WaitForExit();
Я могу сказать, что начальная часть сценария завершена, но ничего сверх этого. Плохой не сценарий, потому что я запустил его вне кода, и он работает отлично.

Когда я удаляю WaitForExit(), вызов процесса возникает сразу же, и программа продолжает работать, но это бесполезно, потому что мне нужно, чтобы сценарий генерировал данные, прежде чем остальная часть программы сможет продолжить работу.

Любопытно, что если я завершаю сеанс отладки после запуска вызова PS, сценарий продолжает работать и все, что было блокировки его завершения больше нет, и он продолжает работать до завершения.

Любые идеи приветствуются.

Спасибо!

Вернуться в «C#»