在C#中调用powershell脚本,需要引用的namespace如下:
using System.Management.Automation;
using System.Management.Automation.Runspaces;
添加System.Management.Automation.dll的引用,需要使用浏览,如果不知道位置,可以先在本机查找下。
代码如下:
1 //RunPowershell(@".\x.ps1", ""); 2 private Collection
RunPowershell(string filePath, string parameters) 3 { 4 RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create(); 5 Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration); 6 runspace.Open(); 7 RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace); 8 Pipeline pipeline = runspace.CreatePipeline(); 9 Command scriptCommand = new Command(filePath);
10 Collection commandParameters = new Collection();
11 12 string[] tempParas = parameters.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
13 for (int i = 0; i < tempParas.Length; i += 2)
14 {
15 CommandParameter commandParm = new CommandParameter(tempParas[i], tempParas[i + 1]);
16 commandParameters.Add(commandParm);
17 scriptCommand.Parameters.Add(commandParm);
18 }
19 20 pipeline.Commands.Add(scriptCommand);
21 Collection psObjects;
22 psObjects = pipeline.Invoke();
23 24 if (pipeline.Error.Count > 0)
25 {
26 throw new Exception("脚本执行失败");
27 }
28 29 runspace.Close();
30 31 return psObjects;
32 }
powershell脚本执行的结果存在Collection集合中。
Tags:
延伸阅读
最新评论