PowerShell不针对4.6

时间:2018-01-09 14:31:49

标签: c# .net powershell

我正在尝试使用.NET 4.6在C#中运行PowerShell脚本 我曾尝试安装PowerShell NuGet,但它不针对.NET 4.6 还有其他方法可以执行PowerShell脚本吗?

我需要指定powershell.exe才能运行脚本。但是现在我有另一个问题,PowerShell窗口立即关闭,所以我无法看到错误消息。我使用以下命令

var s = Process.Start(@"Powershell.exe", $@"-noexit  -ExecutionPolicy Bypass -file ""MyScript.ps1; MyFunction"" ""{arguments}""");
s.WaitForExit();

1 个答案:

答案 0 :(得分:1)

是的,您可以在运行任何外部程序时运行它。 System.Diagnostics.Process会帮助你。

以下是Microsoft community的代码示例:

using System.Diagnostics;

namespace ConsoleApplication2
{
 class Program
 {
  static void Main(string[] args)
  {
   Process myProcess = new Process();

   myProcess.StartInfo.FileName = @"ConsoleApplication1.exe";
   myProcess.StartInfo.UseShellExecute = false;
   myProcess.StartInfo.RedirectStandardOutput = true;
   myProcess.StartInfo.RedirectStandardInput = true;

   myProcess.Start();

   string redirectedOutput=string.Empty;
   while ((redirectedOutput += (char)myProcess.StandardOutput.Read()) != "Enter File Name:") ;

   myProcess.StandardInput.WriteLine("passedFileName.txt");

   myProcess.WaitForExit();

   //verifying that the job was successfull or not?!
   Process.Start("explorer.exe", "passedFileName.txt");
  }
 }
}

ConsoleApplication1.exe应替换为YourApplication.ps1

为什么你会使用System.Diagnostics.Process而不是System.Management.Automation推荐?因为powershell很慢,如果你需要替换它,使用System.Diagnostics.Process将允许立即执行。