在C#中调用Powershell Cmdlets

在C#中调用powershell的cmdlets是非常有用的方法,随着powershell的不断流行,微软针对powershell也会不断推出各个应用的管理模块,最流行的就是Exchage的管理模块,通过powershell的管理模块能完成所有的管理任务。如果在C#中直接调用这些管理模块的命令,那么就避免了深入了解各个应用的APIs接口,直接调用需要的命令就可以了,C#就可以完成前端的界面优化等其他工作。

如何在C#中调用Powershell的cmdlet命令微软也没有个官方文档。只能放狗四处乱搜,还好总算找到一点文档,看着自己研究研究。

以在C#中调用Get-Process为例,在Powershell控制台中输入Get-Process会出现列表结果

PS C:\Users\sunjt1.LENOVO> Get-Process

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
     63       8     2604       4536    71            3792 ApMsgFwd
     80       9     2760       4888    71     0.02   4212 ApntEx
    141      13     3976       8796    85     3.78   2224 Apoint
     75       8     1220       3392    42            1772 armsvc
    154      12    17208      16648    55             584 audiodg
    140      21    26824      30736   155    10.20   1928 chrome
    615      41    72672      74448   260    34.26   2940 chrome
    154      20    67188      31092   182     0.09   7016 chrome
     32       4     1080       2356    22            1552 conhost
     48       7     2232       4888    61     0.02   4228 conhost
     57       7     5084       7532    65     2.32   7336 conhost
    179      17    20856      14504   184     0.11   8212 ConsoleApplication1.vshost
    667      14     2564       4540    65             448 csrss
   1179      45     8652      76588   250             580 csrss
   1318     104   250116     239948   767   328.37   3520 devenv
    224      35    88532      81492   225 1,527.56   1864 dwm
    271      11     6016       9788   108     0.34   2180 Energy Management
    280      22     9484      12724    99            1852 EvtEng
   1396     108    99180      88492   407   126.17   1312 explorer
    854      75    83536      28916   443    86.94   2144 Fetion
    130      14     2744       7320    94     0.09   7308 FlashUtil32_11_2_202_235_ActiveX
    131      13     5296      10364   100    10.58   5392 FlashUtil64_11_2_202_235_ActiveX
    129      13     6556       9616   139     0.05   2100 hkcmd

在C#中调用,结果输出比较头疼,不过如果不是给用户看的话,问题不大,可以根据输出的结果集合进行操作。临近下班,自己看不解释

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Runspace runspace = RunspaceFactory.CreateRunspace();
            runspace.Open();
            Pipeline pipeline = runspace.CreatePipeline();
            Command getProcess = new Command("get-process");
            pipeline.Commands.Add(getProcess);
            Collection<PSObject> output = pipeline.Invoke();
            runspace.Close();
          
            Console.WriteLine(output.Count);
          
          

          
            Console.ReadKey();


        }
    }
}

调用get-process产生的集合存储在output集合里面,使用foreach调用每个集合对象,每个对象的属性集合,使用[“”]属性名称来调用,值用Value来输出。

命令参数的添加,还没测试

getProcess.Parameters.Add("Module", "");

getProcess.Parameters.Add("processname", "qq");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值