或许你也已经察觉,使用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了
也许你会问我管道是什么 至少现在来说我们还暂时不需要知道这个东西。我们会在后面去介绍这个
RunspaceInvoke 类的构造函数有三个重载 你可以从一个已有的Runspace或者一个现有runspaceConfiguration 实例即运行空间配置文件(我们会在后面详细介绍这个) 或者是一个控制台配置文件来创建对用的RunspaceInvoke 实例 一旦我们创建了RunspaceInvoke 我们就可以使用Invoke()方法在控制命令运行 。
此后我们像上图一样获取其运行返回,
如果你只是想简单的让结果输出在屏幕上那么将是非常简单的事情
后面的文章我们讲继续深入讨论这些