我正在尝试使用.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();
答案 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
将允许立即执行。