Я долго читал про разные способы запуска PS из C#, изучил пространства имён
System.Collections.ObjectModel, System.Management.Automation и System.Management.Automation.Runspaces так, что они начали сниться мне по ночам, Firefox ломился от табов вроде такого и такого..
А потом меня, как водится, осенило. От самого скрипта мне не нужно было никакого вывода: только код завершения. Поэтому вполне можно было не заморачиваться с обработкой PS через C#, а сделать намного проще.
Сначала получаем параметры из GET-запроса в строке:
* This source code was highlighted with Source Code Highlighter.
- string strParameters = "";
- foreach (string strParameter in Request.QueryString)
- {
- strParameters += " " + strParameter + ":" + Request.QueryString[strParameter];
- }
А потом запускаем процесс со скриптом и параметрами. Что самое забавное, этот скрипт довольно универсален: имя скрипта тоже можно передавать в качестве параметра.
* This source code was highlighted with Source Code Highlighter.
- Process Powershell = null;
- if (File.Exists(strScriptDirectory + strScriptName))
- {
- Powershell = Process.Start("powershell", @"-noexit -command " + strScriptDirectory + strScriptName + strParameters);
- while (!Powershell.WaitForExit(1000)) ;
- strExitCode = Powershell.ExitCode.ToString();
- }
Как обычно, всё гениальное просто. Надеюсь, кому-нибудь это поможет:)



