在C#中调用powershell脚本,需要引用的namespace如下:
using System.Management;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
添加System.Management.Automation.dll的引用,需要使用浏览,如果不知道位置,可以先在本机查找下。
/// <summary>}
这句为注入脚本一个.net对象:runspace.SessionStateProxy.SetVariable(par.Key,par.Value);
这样在powershell脚本中就可以直接通过$key访问和操作这个对象
下面来看调用实例:
定义一个.net对象,以便powershell中调用:
static void Main(string[] args)
{
List<string> ps = new List<string>();
ps.Add("Set-ExecutionPolicy RemoteSigned");//先执行启动安全策略,,使系统可以执行powershell脚本文件
string pspath = System.IO.Path.Combine(Environment.CurrentDirectory,"ps.ps1");
ps.Add(pspath);//执行脚本文件
info psobj = new info();
psobj.x = 20;
psobj.y = 10;
BaseCommon.PSParam par=new BaseCommon.PSParam();
par.Key="arg";
par.Value=psobj;
BaseCommon.PowerShell.RunScript(ps, new List<BaseCommon.PSParam>() { par });
Console.WriteLine(psobj.x + " + " + psobj.y + " = " + psobj.z);
Console.ReadLine();
}