我在Visual Studio中创建了一个小程序 - 一个带有按钮的表单,用于在单击时执行程序 - 并构建.exe。
该程序应该打开PowerShell并运行ps1文件。
当我在VS中以调试模式运行它时,它按预期运行ps1脚本而没有错误。 当我构建项目并以管理员身份运行exe时,它会短暂打开PowerShell但会立即关闭。
输出文件指出在此系统上禁用了脚本的执行,尽管这是不正确的,因为我可以通过右键单击它们并使用PowerShell运行它们来手动运行任意数量的PowerShell脚本。
我尝试将执行策略从Signed更改为AllSigned,以及Unrestricted,但它没有帮助。
这是我的代码:
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);
}
}