一起谈.NET技术,Powershell简介及其编程访问

本文介绍Powershell的强大功能,包括获取进程和服务信息、管理服务器等,并演示如何在.NET程序中调用Powershell实现自动化操作。

  这个工具可以单独使用,完全可以取代cmd.exe。例如如下:

image  但它的功能远不止于此,例如我们可以很容易地获取所有的进程名称:

image  再来看一个,下面这个例子是获取当前正在运行的服务列表。(可以用条件很方便地筛选):

image  除此之外,Powershell还支持定制,例如微软很多产品都提供了专门的Powershell插件(典型的有:SQL Server,SharePoint Server, Exchange Server等)。通过这些特殊的外壳,可以实现对服务器的管理。功能非常强大。例如下面的SQLPS,可以像查看文件夹那样查看数据库:

image  再例如下图的EMS(Exchange Managment Shell),可以对一个地址列表进行修改:

image  看起来还不错吧,关于Powershell的更多细节,大家有兴趣的话,可以参考微软有关的文档。接下来谈另外一个话题,Powershell这么强大,但终究是手工地操作,能不能在程序中调用它,并且执行有关的操作呢?

答案是:可以的。下面我们来看一个小的例子:

image  添加一个引用。这个程序集在C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0目录中:

image  编写如下简单的代码:


  
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.Diagnostics;

namespace PowershellInvoker
{
class Program
{
static void Main( string [] args)
{
var runspace
= RunspaceFactory.CreateRunspace();
runspace.Open();

var piple
= runspace.CreatePipeline( " Get-Process " );
var result
= piple.Invoke().Select(p => p.BaseObject).Cast < Process > ();

foreach (var item in result)
{
Console.WriteLine(
" {0}\t{1}\t{2} " ,
item.Id.ToString().PadRight(
30 ),
item.ProcessName.PadRight(
30 ),
item.Threads.Count);


}

Console.Read();
}
}
}

image  是的,Powershell据是基于.NET Framework的对象操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值