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

PowerShell执行策略集,但从.Net程序调用时无法识别,powershell,Powershell,我已经在VisualStudio中创建了一个小程序——一个带有按钮的表单,在单击时可以执行该程序——并构建了.exe 此程序应打开PowerShell并运行ps1文件 当我在调试模式下从VS内部运行它时,它可以正常运行ps1脚本而不会出错。 当我构建项目并以管理员身份运行exe时,它会短暂打开PowerShell,但会立即关闭 输出文件声明在此系统上禁用脚本的执行,但这是不正确的,因为我可以通过右键单击任意数量的PowerShell脚本并使用PowerShell运行它们来手动运行这些脚本 我尝试

我已经在VisualStudio中创建了一个小程序——一个带有按钮的表单,在单击时可以执行该程序——并构建了.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);
            }

        }

通常情况下,您可以使用powershell.exe命令行上的参数
-ExecutionPolicy Bypass-File“d:\path\scriptfile.ps1”
来运行脚本。在提示下运行
powershell/?
,以获取更多信息。这可能是32位对64位的问题吗?您是否在一个环境中设置了执行策略,而不是在另一个环境中设置了执行策略,然后调试与发布的可执行文件也以不同的模式执行?(您可能认为您总是使用
C:\Windows\System32
路径引用同一个可执行文件,但情况更为复杂)。感谢您的回复。我没有想到32对64位,所以我会检查一下。我会更新,如果这解决了问题。