或许你也已经察觉,使用Windows PowerShell 来完成你的管理任务,她方便,高效,优雅而灵活。

当然作为一个运维人员来说,Windows PowerShell 就是堪比人类历史上最伟大的发明---空调 之后最伟大的发明 没有之一,同样作为一个运维,开发界限模糊的IT时代,PowerShell 作为一个 跨平台的管理工具,尤其在Windows 平台 光芒无限,在面临组织内自定义应用程序时候通过有效的访问手段,开发人员依然可以依靠这一强大的平台进行快速的构建应用程序,当然作为管理,运维人员适当的学习开发基础知识更有利于工作的开展,同样我们今天讨论的内容虽然是面向开发者,但管理人员依然适用因为他们会再一次提升你的IT结构的自动化水平,进一步的提升你的工作效率。

下面我们将不再废话 直接进入正题

我们不妨先从运维人员的日常工作开始看看 我们应该如何实现在应用程序中使用PowerShell

首先运维人员要开打PowerShell 无非使用console 或者ISE 或者是PowerShell Studio 要么

使用PSWA (PowerShell Web Access)

在这里 我们就已经发现了第一个问题 我们每次打开的Console 或者ISE 都称为一个会话 由于我们应用程序中并没有这个“会话”所以 要在用用程序中使用 PowerShell 我们就需要这么一个“会话”

也许你觉得这“会话”有点困难,要像使用Bat 那样的复杂,更多的不可控,因为我们总是希望代码尽可能的精简,尽可能强壮,我有个好消息,使用并不复杂, 也非常可控就像你使用其他技术一样的容易。

So 我们要准备一下如何去使用 “会话”当然 我们会用C#作为示例其他的语言在使用方式一样 请根据自己使用的语法进行相应修改。

如果你只想简单使用这个“会话”那么只要创建控制台应用程序就可以开始愉快的使用了

创建好项目后请添加 对如下的Namespace 的引用

System.Management.Automation

System.Management.Automation.Runspaces

System.Collections.ObjectModel

当然这些 都已在GAC中你不需要额外的去安装什么.

如果想快速使用powershell 引擎中的命令那么 使用 RunspaceInvoke 是最简单的方式它已经

为我们封装好了Runspcae Pipline 为我们省去很多手动创建的事情,当然如果你只是简单的使用那么

已经足够,这样的代价就是牺牲了引擎中的其他API 和更多的管道以及Runspace的功能

就像下图一样 我们就可以简单的在一个控制台程序中使用PowerShell了

在应用程序中使用Runspace 1_管理工具

也许你会问我管道是什么 至少现在来说我们还暂时不需要知道这个东西。我们会在后面去介绍这个

RunspaceInvoke 类的构造函数有三个重载 你可以从一个已有的Runspace或者一个现有runspaceConfiguration 实例即运行空间配置文件(我们会在后面详细介绍这个) 或者是一个控制台配置文件来创建对用的RunspaceInvoke 实例 一旦我们创建了RunspaceInvoke 我们就可以使用Invoke()方法在控制命令运行 。

在应用程序中使用Runspace 1_空调_02

此后我们像上图一样获取其运行返回,

在应用程序中使用Runspace 1_管理工具_03

如果你只是想简单的让结果输出在屏幕上那么将是非常简单的事情

在应用程序中使用Runspace 1_开发_04

后面的文章我们讲继续深入讨论这些