C#中执行PowerShell 脚本
来源:互联网 发布:汽车进出口数据 编辑:程序博客网 时间:2024/05/17 11:32
在C#中调用powershell脚本,需要引用的namespace如下:
using System.Management;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
添加System.Management.Automation.dll的引用,需要使用浏览,如果不知道位置,可以先在本机查找下。
/// <summary>/// PowerShell脚本基础
/// </summary>
public static class PowerShell
{
/// <summary>
/// 运行脚本信息,返回脚本输出
/// </summary>
/// <param name="scriptText">需要运行的脚本</param>
/// <returns>output of the script</returns>
public static string RunScript(List<string> scripts,List<PSParam> pars)
{
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
foreach (var scr in scripts)
{
pipeline.Commands.AddScript(scr);
}
//注入参数
if (pars != null)
{
foreach (var par in pars)
{
runspace.SessionStateProxy.SetVariable(par.Key,par.Value);
}
}
//返回结果
var results = pipeline.Invoke();
runspace.Close();
StringBuilder stringBuilder = new StringBuilder();
foreach (PSObject obj in results)
{
stringBuilder.AppendLine(obj.ToString());
}
return stringBuilder.ToString();
}
}
/// <summary>
/// 脚本参数
/// </summary>
public class PSParam
{
public string Key
{
get;
set;
}
public object Value
{
get;
set;
}
}
这句为注入脚本一个.net对象:runspace.SessionStateProxy.SetVariable(par.Key,par.Value);
这样在powershell脚本中就可以直接通过$key访问和操作这个对象
下面来看调用实例:
定义一个.net对象,以便powershell中调用:
- class info
- {
- public int x { get; set; }
- public int y { get; set; }
- public int z { get; set; }
- }
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();
}
- $a=$arg.x
- $b=$arg.y
- $arg.z=$a+$b
- C#中执行PowerShell 脚本
- C#中执行PowerShell 脚本
- powershell中禁止执行脚本解决办法
- Powershell中禁止执行脚本解决办法
- powershell中禁止执行脚本解决办法
- Powershell中禁止执行脚本解决办法(about_Execution_Policies)
- POWERSHELL脚本执行权限
- POWERSHELL脚本执行权限
- PowerShell因为在此系统中禁止执行脚本解决方法
- PowerShell中出现”禁止执行脚本“的解决方法
- PowerShell因为在此系统中禁止执行脚本解决方法
- PowerShell因为在此系统中禁止执行脚本解决方法
- PowerShell因为在此系统中禁止执行脚本解决方法
- C# 调用powershell 执行命令
- 用PowerShell来执行 交互式脚本文件
- 如何用计划任务执行powershell脚本
- Windows server 打开 powershell 执行脚本
- PowerShell-2.解决禁止本地执行脚本
- VxWorks for PowerPC的内存分配
- 获取uuid的方法
- linux yum命令详解
- Linux Qt应用程序的守护精灵
- 互联网女皇玛丽·米克尔发布互联网新趋势报告
- C#中执行PowerShell 脚本
- 管理11g RAC之Cluster实验
- 如何创建从SQL到Oracle的DBlink
- ArcGIS 10 Desktop 最简安装及完全破解-- 终结者版本
- XFire 和JAX-WS的一些注意地方
- 管理11g RAC之DB实验
- 返回首次出现c的位置的前面字符串
- 《#诗盗#·挨踢》
- 搜索字符串右边起的第一个匹配字符