Я создал небольшую программу в Visual Studio - форму с кнопкой для запуска программы при нажатии - и создал .exe.
Эта программа должна открывать PowerShell и запускать файл ps1.
Когда я запускаю его из VS в режиме отладки, он работает, как и ожидалось, без проблем запуская скрипт ps1.Когда я собираю проект и запускаю exe-файл от имени администратора, он на короткое время открывает PowerShell, но сразу же закрывается.
В выходном файле указано, что выполнение сценариев в этой системе отключено, хотя это неправильно, поскольку я могу запуститьлюбое количество сценариев PowerShell вручную, щелкнув их правой кнопкой мыши и запустив их с помощью PowerShell.
Я пытался изменить политику выполнения с подписанного на AllSigned, а также без ограничений, но это не помогло.
Вот мой код:
if (File.Exists("LiveSiteTests.ps1"))
{
File.GetAttributes("LiveSiteTests.ps1");
string strCmdText = Path.Combine(Directory.GetCurrentDirectory(), "LiveSiteTests.ps1");
var process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.FileName = @"C:\windows\system32\windowspowershell\v1.0\powershell.exe";
process.StartInfo.Arguments = "\"&'" + strCmdText + "'\"";
process.Start();
string s = process.StandardOutput.ReadToEnd();
process.WaitForExit();
using (StreamWriter outfile = new StreamWriter("StandardOutput.txt", true))
{
outfile.Write(s);
}
}