c#调用powershell

第一步:引用“System.Management.Automation.dll”

这个动态库可以从自己电脑上搜索到,但是本人在做测试的时候发现换个机器会报错,最后还是用的从window server 2008上面搜索的

第二步:封装运行脚本

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.Text;
using System.Threading.Tasks;

namespace SetUp
{
    /// <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 = null;
            Pipeline pipeline = null;
            runspace = RunspaceFactory.CreateRunspace();
            runspace.Open();
            pipeline = runspace.CreatePipeline();
            pipeline.Commands.AddScript("Set-ExecutionPolicy RemoteSigned");
            //pipeline.Commands.AddScript("Set-ExecutionPolicy Unrestricted");
            //pipeline.Commands.AddScript("Set-ExecutionPolicy -ExecutionPolicy Unrestricted");
            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)
            {
                var Success = obj.Properties["Success"];
                if (Success != null)
                {
                    stringBuilder.AppendLine(Success.Value.ToString());
                }
                else
                {
                    stringBuilder.AppendLine(obj.ToString());
                }
            }
            return stringBuilder.ToString();
        }
    }

    /// <summary>   
    /// 脚本参数   
    /// </summary>   
    public class PSParam
    {
        public string Key
        {
            get;
            set;
        }

        public object Value
        {
            get;
            set;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackletter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值