C# 关于.NET中同步powershell执行的问题

C# 关于.NET中同步powershell执行的问题,c#,.net,powershell,C#,.net,Powershell,我想在.NET framework中执行powershell命令,处理输出和错误,但以下代码无法执行任何“复杂”命令 这不是执行Powershell命令或任何命令的人。要执行任何程序,请将程序名传递给FileName,而不是cmd.exe。将任何实际参数传递给参数。这意味着FileName='powershell.exe'和Arguments=whatever。尽管powershell本身是用.NET编写的。您可以直接从代码创建Powershell管道并执行Powershell命令,而无需启动另

我想在.NET framework中执行powershell命令,处理输出和错误,但以下代码无法执行任何“复杂”命令


这不是执行Powershell命令或任何命令的人。要执行任何程序,请将程序名传递给
FileName
,而不是
cmd.exe
。将任何实际参数传递给
参数
。这意味着
FileName='powershell.exe'
Arguments=whatever
。尽管powershell本身是用.NET编写的。您可以直接从代码创建Powershell管道并执行Powershell命令,而无需启动另一个进程。此外,Powershell还有错误、进度、信息和其他无法从进程访问的流
    Process process = new Process();
    process.StartInfo.FileName = "cmd.exe";
    process.StartInfo.RedirectStandardInput = true;
    process.StartInfo.RedirectStandardOutput = true;
    process.StartInfo.RedirectStandardError = true;
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.WorkingDirectory = IsRoot(location);
    process.StartInfo.Arguments = string.Concat("/C powershell.exe /C ", cmd);
    process.Start();
    process.WaitForExit();
    string output = process.StandardOutput.ReadToEnd();
    string error = process.StandardError.ReadToEnd();
    process.Close();

    return (output, error);