Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在powershell调用[System.Environment]::退出(1)的情况下保持Asp.Net web应用程序运行_C#_Powershell_Asp.net Core_Exit - Fatal编程技术网

C# 如何在powershell调用[System.Environment]::退出(1)的情况下保持Asp.Net web应用程序运行

C# 如何在powershell调用[System.Environment]::退出(1)的情况下保持Asp.Net web应用程序运行,c#,powershell,asp.net-core,exit,C#,Powershell,Asp.net Core,Exit,我目前正在C#中构建一个Asp.Net核心web应用程序。web应用程序需要调用我无法编辑或修改的预先存在的powershell脚本。我这样称呼脚本: using (var pwsh = PowerShell.Create()) { string script = $"Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process; cd \"{directory}\"; .\\script.ps1&qu

我目前正在C#中构建一个Asp.Net核心web应用程序。web应用程序需要调用我无法编辑或修改的预先存在的powershell脚本。我这样称呼脚本:

using (var pwsh = PowerShell.Create())
{
    string script = $"Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process; cd \"{directory}\"; .\\script.ps1";
    var results = pwsh.AddScript(script).Invoke();
}
这在很大程度上没有任何明显的问题。但是,当脚本抛出错误时会出现问题。脚本中有一个全局捕获,如下所示:

catch
{
    [System.Environment]::Exit(1)
}

当进入这个catch块时,对Environment.Exit的调用会导致整个网站崩溃-这不是我想要的行为。我想知道这是否是真的(同样不改变脚本)。

正如Keith Nicholas所说,我们可以尝试启动一个进程来运行powershell脚本

关于如何运行powershell脚本,我建议您可以尝试参考以下示例代码:

        if (System.IO.File.Exists("your powshell script path"))
        {
             string strCmdText = "your powshell script path";
            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();

        }

生成一个进程来运行脚本