C# 通过c打开Windows Powershell#

C# 通过c打开Windows Powershell#,c#,windows,powershell,C#,Windows,Powershell,我试图通过C#代码打开Powershell,最终目标是通过C#编写命令行(不使用Powershell脚本) 我做了一些研究,得出了这个代码片段,但由于某些原因,它无法打开Powershell。要打开Powershell,我需要更改哪些代码 //Opening Powershell private void Execute() { ProcessStartInfo startInfo = new ProcessStartInfo { FileName = @"C:\Windows\System32

我试图通过C#代码打开Powershell,最终目标是通过C#编写命令行(不使用Powershell脚本)

我做了一些研究,得出了这个代码片段,但由于某些原因,它无法打开Powershell。要打开Powershell,我需要更改哪些代码

//Opening Powershell
private void Execute()
{
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = @"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe",
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true,
};
Process pro = Process.Start(startInfo);
pro.WaitForExit();
Thread.Sleep(3000);
pro.Close();
}

我一直在玩这个。也许还有其他的方法,但这也很有效。由于您需要一些初始设置,我认为您需要使用,如果您这样做,您还需要添加

startInfo.UseShellExecute = false;
因此,一个有效的例子是

    static void Main(string[] args)
    {
        OpenPowerShell(@"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe");
    }

    static void OpenPowerShell(string path)
    {
        ProcessStartInfo startInfo = new ProcessStartInfo(path);
        startInfo.UseShellExecute = false;
        startInfo.EnvironmentVariables.Add("RedirectStandardOutput", "true");
        startInfo.EnvironmentVariables.Add("RedirectStandardError", "true");
        startInfo.EnvironmentVariables.Add("UseShellExecute", "false");
        startInfo.EnvironmentVariables.Add("CreateNoWindow", "true");
        Process.Start(startInfo);
    }
或者,如果您对另一个窗口满意,只需:

    static void Main(string[] args)
    {
        OpenPowerShell(@"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe");
    }

    static void OpenPowerShell(string path)
    {
        Process.Start(path);
    }

编译器至少会抱怨两种打字错误。你能发布你真正的代码并解释什么是“不打开”吗?你有错误吗?@nvoigt请原谅我的拼写错误-我已经改正了。我没有得到任何错误。我正在尝试打开powershell控制台。您预计会发生什么情况?你能用简单的英语描述一下吗?你需要在这里发布你期望发生的事情。例如,您的语句“打开powershell控制台”可能意味着您希望显示一个窗口。但是,您已经说过“CreateNoWindow=true”,您正在尝试重定向所有输出。所以在我看来,这似乎是一场冲突。因此,您必须准确描述您期望在这里发生的事情。我认为他希望打开powershell控制台。删除此
CreateNoWindow=true,
您的第一个示例在某些情况下不起作用,powershell控制台未打开。不过,第二个例子确实有效。但只有启动powershell才允许我通过c#在其中编写命令,对吗?因为我从未将输出设置为真?@as19aux老实说,我很少玩这个。我只是对这个问题感兴趣,所以我自己试了一下。我的理解是,您可以通过运行
Process.start(path)
打开一个新的powershell窗口,也可以在powershell运行时传递变量并将命令提示符用作powershell shell。但不确定这是否完全正确。