PowerShell执行策略集,但从.Net程序调用时无法识别

时间:2018-05-14 14:25:10

标签: powershell

我在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);
            }

        }

0 个答案:

没有答案