Windows PowerShell高级编程
基本信息
编辑推荐
本书的作者由微软专家团队组成,从程序员的角度对Windows PowerShell编程技术进行介绍,不仅讲解了PowerShell的核心模块和基本概念,还提供了大量利用PowerShell强大功能构建软件包的实用开发技巧,是学习PowerShell编程的最佳参考。.
推荐阅读
内容简介回到顶部↑
书籍
计算机书籍
powershell是一种新的命令行外壳和脚本语言,用于进行系统管理和自动化。本书的作者由微软专家团队组成,从程序员的角度对windows powershell编程技术进行介绍,不仪讲解了powershell的核心模块和基本概念,还提供了大量利用powershell强大功能构建软件包的实用开发技巧,是学习powershell编程的最佳参考。
在学习过程中,您不仅会发现powershell的sdk为应用程序提供了完整的技术支持,还将体验powershell的伞新技术,它使所有.net framework对象都可以通过脚本访问,这也使得powershell有望成为最受欢迎的工具和对windows管理员来说最重要的语言。一旦升始编写命令行类的上具程序,您就会惊奇地发现powershell可以使您将注意力集中在核心业务逻辑上。相信这款由微软精心打造的软件会为您的编程生活带来额外的惊喜和收获。
本书主要内容
•创建powershell的snap—in
•开发自定义的cmdlet
•创建自定义的提供者
•调用powershell执行引擎
•实现宿主用户接口
•类型扩展及格式化
本书读者对象
本书面向希望拓展windows powershell功能,或者使用powershell技术来扩展自己的应用程序的开发人员和程序员。
计算机书籍
powershell是一种新的命令行外壳和脚本语言,用于进行系统管理和自动化。本书的作者由微软专家团队组成,从程序员的角度对windows powershell编程技术进行介绍,不仪讲解了powershell的核心模块和基本概念,还提供了大量利用powershell强大功能构建软件包的实用开发技巧,是学习powershell编程的最佳参考。
在学习过程中,您不仅会发现powershell的sdk为应用程序提供了完整的技术支持,还将体验powershell的伞新技术,它使所有.net framework对象都可以通过脚本访问,这也使得powershell有望成为最受欢迎的工具和对windows管理员来说最重要的语言。一旦升始编写命令行类的上具程序,您就会惊奇地发现powershell可以使您将注意力集中在核心业务逻辑上。相信这款由微软精心打造的软件会为您的编程生活带来额外的惊喜和收获。
本书主要内容
•创建powershell的snap—in
•开发自定义的cmdlet
•创建自定义的提供者
•调用powershell执行引擎
•实现宿主用户接口
•类型扩展及格式化
本书读者对象
本书面向希望拓展windows powershell功能,或者使用powershell技术来扩展自己的应用程序的开发人员和程序员。
作译者回到顶部↑
本书提供作译者介绍
Arul Kumaravel是目前Windows:PowerShell开发小组的负责人。从早期开始,他就参与了这个项目并领导该小组发布了第一版的Windows PowerShell产品。现在,他正领导着下一个版本的PowerShell产品的开发。Arul从他年轻时学习BASIC编程开始,就着迷于计算机技术。他在Iowa大学和印度Madras工程学院都获得了计算机科学方面的硕士学位。在微软实习期间,他为IE3浏览器编写了第一个JavaScfipt/VBScfipt调试器,同时微软公司的氛围也留给了他很好的印象,他决定为微软效力而改变数以万计人的生活。在微软任.. << 查看详细
目录回到顶部↑
第1章 powershell简介
1.1 windows powershell设计原则
1.1.1 保留用户已有的投资
1.1.2 提供一个功能强大、面向对象的外壳程序
1.1.3 扩展性是第一位的
1.1.4 剔除开发过程中的障碍
1.2 windows powershell快速入门
1.3 windows powershell的高层体系结构
1.3.1 宿主程序
1.3.2 windows powershell引擎
1.3.3 windows powershell snap-in
1.4 小结
第2章 扩展windows powershell
2.1 powershell snap-in分类
2.2 编写标准的powershellsnap-in
2.2.1 编写powershell snap-in
2.2.2 注册powershell snap-in
2.2.3 查看可用的powershellsnap-in列表
2.2.4 将powershell snap.in动态装载到外壳程序中
2.2.5 从外壳程序中动态删除snap-in
1.1 windows powershell设计原则
1.1.1 保留用户已有的投资
1.1.2 提供一个功能强大、面向对象的外壳程序
1.1.3 扩展性是第一位的
1.1.4 剔除开发过程中的障碍
1.2 windows powershell快速入门
1.3 windows powershell的高层体系结构
1.3.1 宿主程序
1.3.2 windows powershell引擎
1.3.3 windows powershell snap-in
1.4 小结
第2章 扩展windows powershell
2.1 powershell snap-in分类
2.2 编写标准的powershellsnap-in
2.2.1 编写powershell snap-in
2.2.2 注册powershell snap-in
2.2.3 查看可用的powershellsnap-in列表
2.2.4 将powershell snap.in动态装载到外壳程序中
2.2.5 从外壳程序中动态删除snap-in
译者序回到顶部↑
在各种发行版的操作系统中,Windows操作系统安装使用得最广泛、最受用户欢迎。但对系统管理工作者而言,Windows一直有个小小的缺憾,就在于没能提供像Unix Shell程序那样的强大脚本支持,而使得系统管理员的工作效率不高。PowerShell的问世彻底改变了这种局面。PowerShell是构建在Windows.NET平台之上的,与.NET框架紧密耦合,因此它不仅是一种脚本编程语言,还为系统管理员提供了功能丰富的编程开发环境,可以轻易操作系统中的COM组件。.
目前,市场上已经出现了介绍如何使用Windows PowerShell来提高系统管理效率的书籍,但是从API层次介绍PowerShell编程的权威之作相当稀少。本书比SDK文档更加详尽地介绍了cmdlet、提供者(provider)、snap-in、宿主(host)程序等方面的开发技术。本书针对PowerShell snap-in和宿主(host)程序开发人员而写,它从Windows PowerShell底层API开始介绍PowerShell程序设计。书中每个知识点都有配套的实例代码,可以从本书的合作站点上自由下载,极易验证。..
本人是计算机专业的在读博士生,经常在Linux下进行脚本编程。接触Windows PowerShell一年多来,渐渐被它强大的功能所吸引。在Windows操作系统中,PowerShell提供了能和Linux下的bash相媲美的强大功能。本书翻译过程中也加入了个人的使用体会,希望能和读者在PowerShell技术方面进行探讨交流,共同进步。
翻译过程中错误之处在所难免,敬请广大读者提供反馈意见,读者可以将意见发到wkservice@vip.163.com,我们会仔细查读者发来的每一封邮件,以求进一步提高本书的质量。...
译者
2008年6月
目前,市场上已经出现了介绍如何使用Windows PowerShell来提高系统管理效率的书籍,但是从API层次介绍PowerShell编程的权威之作相当稀少。本书比SDK文档更加详尽地介绍了cmdlet、提供者(provider)、snap-in、宿主(host)程序等方面的开发技术。本书针对PowerShell snap-in和宿主(host)程序开发人员而写,它从Windows PowerShell底层API开始介绍PowerShell程序设计。书中每个知识点都有配套的实例代码,可以从本书的合作站点上自由下载,极易验证。..
本人是计算机专业的在读博士生,经常在Linux下进行脚本编程。接触Windows PowerShell一年多来,渐渐被它强大的功能所吸引。在Windows操作系统中,PowerShell提供了能和Linux下的bash相媲美的强大功能。本书翻译过程中也加入了个人的使用体会,希望能和读者在PowerShell技术方面进行探讨交流,共同进步。
翻译过程中错误之处在所难免,敬请广大读者提供反馈意见,读者可以将意见发到wkservice@vip.163.com,我们会仔细查读者发来的每一封邮件,以求进一步提高本书的质量。...
译者
2008年6月
前言回到顶部↑
欢迎阅读本书。.
2003年,在微软的一个会议中心,来自微软管理控制台小组的工程师们组织了一个座谈会,他们举行了一个关于升级版MMC的原型演示活动,我有幸参加了这个会议。自微软发布第一个以Internet为中心的服务器操作系统,即Windows 2000 Server操作系统后,他们收到了来自Windows系统管理员用户大量的意见反馈,这些反馈并不都是称赞性的。那个原型演示就是微软公司早期针对这些反馈意见做出的回应之一。
自基于DOS的文本文件管理器开发以来,Windows 2000 Server操作系统经过了长期的演化。在其发展过程中,有很长一段时间人们认为它只适合于用来处理邮件、管理一个20MB大小的硬盘,除此之外,别无他用。并且,Windows 2000 Server操作系统的管理工作也是按照视窗概念的方式进行的,系统管理是通过大量的事件交互完成的。尽管Windows系统中已经存在大量的内置API函数和COM型API函数,遗憾的是,这两者之间并没有衔接起来。在Linux下,您可以书写外壳程序脚本代码来自动配置邮件和DNS服务器,但在Windows中,您要么手动配置,要么得先学习C++和COM编程。
在Windows中,Visual Basic Script和JavaScript技术的集成和合并一定程度上弥补了这个空白,但是GUI方式和命令行方式之间管理工作效率的差距并没有得到彻底的填补。传统的Windows脚本只是通过COM组件的一个子集与操作系统交互,而GUI程序则不但可以使用所有的COM组件、调用Win32 API函数,还可以直接调用内置的内核API函数(如,果是任务管理器这类GUI程序的话)。因此,Windows脚本的光芒一直以来都被GUI方式给掩盖了。
让我们回到那个原型演示会议现场。想象一下:听众们鱼贯而入,讲台上的工程师通过引用一个关于PA系统的笑话来作开场白。灯光暗了下去,演示开始了。他们演示的新型MMC原型系统是一个基于GUI的程序,该程序使用了一个命令行引擎作为它的API层。每一次节点扩展操作都变成了一次查询,每一次“确定”的点击操作都变成了一个命令。GUI用户的每一个操作都百分百如实地以脚本方式显示在屏幕的底部。老程序员在座位上紧张地微微颤动,那些高级经理人眼中则仿若看到了巨大的利润滚滚而来,会议的筹办人察觉到听众的反应后,手里拿着一块小点心,走到屋外悠闲地点燃了一支香烟。
这个演示宣告了三年后所谓的Windows PowerShell技术的开始。第一版的Windows PowerShell可以从网络上自由下载,同时也作为一个可选的组件集成到了Windows Server 2008操作系统中。Windows PowerShell不但为各种类型的用户提供了一个丰富的编程环境,也为Windows用户从命令行方式过渡到COM组件以及其他未来技术奠定了墓础。
在PowerShell有望成为年度黑马之际,本书也跟上时代的步伐,为您学习Windows PowerShell平台上的开发,提高系统管理的效率提供了全面指导。书中主要介绍了PowerShell 1.0开发平台中与cmdlet开发、扩展类型系统(Extended Type System,简称ETS)、宿主(Host)、提供者(Provider)等概念有关的知识。
全书共八章。第1章简要介绍PowerShell入门知识;第2章介绍snap-in开发,给读者一个整体印象;第3章介绍扩展类型系统ETS;第4章介绍cmdlet开发;第5章介绍提供者(provider);第6、7章介绍宿主(host)API及其运用;第8章介绍输出信息格式化配置文件。最后,附录中还给出了一些有用的内容。
本书读者对象
本书面向PowerShell snap-in和宿主程序开发人员,它从API层次起开始介绍PowerShell编程。本书的作者是PowerShell 1.0版的研发小组成员,本书比SDK文档更加详尽地介绍了cmdlet、provider、snap-in、宿主程序以及可定制宿主等方面的开发技术。
源代码下载
在完成本书的示例时,可以选择手动输入代码或者使用本书附带的源代码文件。本书用到的所有源代码可以从www.tupwk.com.cn/downpage下载,也可以从www.wrox.com下载。进入该站点后,只需找到本书的名称(使用Search框或者书名列表),单击本书的详细页面上的Download Code链接,就可以得到本书所有的源代码。
注意:
由于很多书有相似的名称,所以用ISBN搜索更为容易。本书的ISBN是978-0-470-17393-0。..
下载了代码后,用您喜欢的压缩工具把它解压缩。此外也可以去Wrox的主下载页面www.worx.com/dynamic/books/download.aspx找到本书或其他Wrox出版的书的代码。
勘误表
尽管我们竭尽所能来确保在正文和代码中没有错误,但错误难免会发生。如果您在Wrox出版的书中发现了错误(比如拼写错误或者代码错误),我们将非常感谢您的反馈。发送勘误表将节省其他读者的时间,同时也会帮助我们提供更高质量的信息。
到www.wrox.com站点上,用Search框或者标题列表找到本书的名称,在详细页面上点击Book Errata链接就能找到本书的勘误表。在这个页面中可以看到所有被提交的本书的勘误表,它们是由Wrox的编辑发布的。在www.worx.com/misc-pages/booklist.shtml中有完整的书的列表,其中包括每本书的勘误表。
如果您在书的勘误表页面上没有看到您发现的错误,请将错误发送至wkservice@vip.163.com。我们会检查这些信息,如果属实就把它添加到本书的勘误表页面上,并在本书的后续版本中更正错误。
p2p.Wrox.com
2003年,在微软的一个会议中心,来自微软管理控制台小组的工程师们组织了一个座谈会,他们举行了一个关于升级版MMC的原型演示活动,我有幸参加了这个会议。自微软发布第一个以Internet为中心的服务器操作系统,即Windows 2000 Server操作系统后,他们收到了来自Windows系统管理员用户大量的意见反馈,这些反馈并不都是称赞性的。那个原型演示就是微软公司早期针对这些反馈意见做出的回应之一。
自基于DOS的文本文件管理器开发以来,Windows 2000 Server操作系统经过了长期的演化。在其发展过程中,有很长一段时间人们认为它只适合于用来处理邮件、管理一个20MB大小的硬盘,除此之外,别无他用。并且,Windows 2000 Server操作系统的管理工作也是按照视窗概念的方式进行的,系统管理是通过大量的事件交互完成的。尽管Windows系统中已经存在大量的内置API函数和COM型API函数,遗憾的是,这两者之间并没有衔接起来。在Linux下,您可以书写外壳程序脚本代码来自动配置邮件和DNS服务器,但在Windows中,您要么手动配置,要么得先学习C++和COM编程。
在Windows中,Visual Basic Script和JavaScript技术的集成和合并一定程度上弥补了这个空白,但是GUI方式和命令行方式之间管理工作效率的差距并没有得到彻底的填补。传统的Windows脚本只是通过COM组件的一个子集与操作系统交互,而GUI程序则不但可以使用所有的COM组件、调用Win32 API函数,还可以直接调用内置的内核API函数(如,果是任务管理器这类GUI程序的话)。因此,Windows脚本的光芒一直以来都被GUI方式给掩盖了。
让我们回到那个原型演示会议现场。想象一下:听众们鱼贯而入,讲台上的工程师通过引用一个关于PA系统的笑话来作开场白。灯光暗了下去,演示开始了。他们演示的新型MMC原型系统是一个基于GUI的程序,该程序使用了一个命令行引擎作为它的API层。每一次节点扩展操作都变成了一次查询,每一次“确定”的点击操作都变成了一个命令。GUI用户的每一个操作都百分百如实地以脚本方式显示在屏幕的底部。老程序员在座位上紧张地微微颤动,那些高级经理人眼中则仿若看到了巨大的利润滚滚而来,会议的筹办人察觉到听众的反应后,手里拿着一块小点心,走到屋外悠闲地点燃了一支香烟。
这个演示宣告了三年后所谓的Windows PowerShell技术的开始。第一版的Windows PowerShell可以从网络上自由下载,同时也作为一个可选的组件集成到了Windows Server 2008操作系统中。Windows PowerShell不但为各种类型的用户提供了一个丰富的编程环境,也为Windows用户从命令行方式过渡到COM组件以及其他未来技术奠定了墓础。
在PowerShell有望成为年度黑马之际,本书也跟上时代的步伐,为您学习Windows PowerShell平台上的开发,提高系统管理的效率提供了全面指导。书中主要介绍了PowerShell 1.0开发平台中与cmdlet开发、扩展类型系统(Extended Type System,简称ETS)、宿主(Host)、提供者(Provider)等概念有关的知识。
全书共八章。第1章简要介绍PowerShell入门知识;第2章介绍snap-in开发,给读者一个整体印象;第3章介绍扩展类型系统ETS;第4章介绍cmdlet开发;第5章介绍提供者(provider);第6、7章介绍宿主(host)API及其运用;第8章介绍输出信息格式化配置文件。最后,附录中还给出了一些有用的内容。
本书读者对象
本书面向PowerShell snap-in和宿主程序开发人员,它从API层次起开始介绍PowerShell编程。本书的作者是PowerShell 1.0版的研发小组成员,本书比SDK文档更加详尽地介绍了cmdlet、provider、snap-in、宿主程序以及可定制宿主等方面的开发技术。
源代码下载
在完成本书的示例时,可以选择手动输入代码或者使用本书附带的源代码文件。本书用到的所有源代码可以从www.tupwk.com.cn/downpage下载,也可以从www.wrox.com下载。进入该站点后,只需找到本书的名称(使用Search框或者书名列表),单击本书的详细页面上的Download Code链接,就可以得到本书所有的源代码。
注意:
由于很多书有相似的名称,所以用ISBN搜索更为容易。本书的ISBN是978-0-470-17393-0。..
下载了代码后,用您喜欢的压缩工具把它解压缩。此外也可以去Wrox的主下载页面www.worx.com/dynamic/books/download.aspx找到本书或其他Wrox出版的书的代码。
勘误表
尽管我们竭尽所能来确保在正文和代码中没有错误,但错误难免会发生。如果您在Wrox出版的书中发现了错误(比如拼写错误或者代码错误),我们将非常感谢您的反馈。发送勘误表将节省其他读者的时间,同时也会帮助我们提供更高质量的信息。
到www.wrox.com站点上,用Search框或者标题列表找到本书的名称,在详细页面上点击Book Errata链接就能找到本书的勘误表。在这个页面中可以看到所有被提交的本书的勘误表,它们是由Wrox的编辑发布的。在www.worx.com/misc-pages/booklist.shtml中有完整的书的列表,其中包括每本书的勘误表。
如果您在书的勘误表页面上没有看到您发现的错误,请将错误发送至wkservice@vip.163.com。我们会检查这些信息,如果属实就把它添加到本书的勘误表页面上,并在本书的后续版本中更正错误。
p2p.Wrox.com
书摘回到顶部↑
第1章PowerShell简介
Windows PowerShell是.NET平台之上基于对象的命令行外壳程序和脚本语言。PowerShell为Windows平台上的IT事务管理工作提供了更高级的控制和自动化支持,更有利于提高IT专业人士和开发人员的工作效率。
市场上向IT专业人士介绍Windows PowerShell的书已经屡见不鲜,但从cmdlet、提供程序(Provider)类和宿主(Host)类开发方面来介绍PowerShell开发技术的书却寥寥无几。本书从使用Windows PowerShell软件包的过程入手,向读者介绍其中的基本概念、常用组件以及开发技术,试图弥补前面提到的图书市场空白。对于那些意图扩展Windows PowerShell的功能或者使用PowerShell扩展自己程序功能的开发人员来说,本书是最佳的
选择。
一般来说,在书写命令行工具时,程序员需要书写代码来完成参数解析、赋值绑定工作。此外,程序员还要书写代码,用来格式化命令输出信息。Windows PowerShell为程序员提供了一个自带解释器的运行时引擎,简化了参数解析、赋值绑定等繁琐的工作。当输出对象需要显示时,PowerShell也为程序开发人员提供了可定制的格式化功能。使用Windows PowerShell完成那些开发命令行工具时的常规事务,开发人员可以集中精力关注程序的业务逻辑问题,从而摆脱那些琐碎的小问题。
1.1Windows PowerShell设计原则
多年以来,广大用户对微软Windows操作系统上的系统管理工作提了许多意见,Windows Powershell就是对这些用户反馈信息的响应。最初,许多用户常常询问为什么像一些传统Unix系统上的外壳程序没有被授权并包含在Windows操作系统中。对于这个问题,我们认为,只有开发一种独立于那些传统外壳程序的全新外壳程序才能解决这个问题。这个想法进而分解为四条指导原则,这四个原则构成了设计PowerShell的指导思想。
1.1.1 保留用户已有的投资
一项新技术发布后,必须经历一定的时间才能被广泛采用。此外,客户很可能在原有技术上已经投资了很多,要他们抛弃已有的投资是不现实的。因此,PowerShell在本质上与现有的Windows管理技术完全兼容,保留了用户已有的投资。
事实上,在PowerShell环境中,操作系统原有的命令和脚本可以直接运行。PowerShell除了和.NET紧密结合外,它和COM、WMI和ADSI技术也几乎是无缝集成的。PowerShell提供了一个统一的操作环境,用户可以处理前面提到的各种对象,这是PowerShell的最大特色。在本章后面的PowerShell快速入门部分,您可以看到本设计原则和其他设计原则相关的代码演示。
1.1.2提供一个功能强大、面向对象的外壳程序
CMD.exe和其他的外壳程序都是基于文本的,也就是说在这些外壳程序中,命令接收文本输入,产生文本输出。在内部处理时,这些命令把文本转化为其他对象,但仍以文本方式进行输出。在传统外壳程序中,当许多简单的命令通过管道连接起来时,命令之间需要进行许多的文本处理工作才能产生需要的输出。这方面的工具比如SED、AWK和Perl,由于它们出色的文本处理能力,很受命令行脚本程序员的青睐。
……
Windows PowerShell是.NET平台之上基于对象的命令行外壳程序和脚本语言。PowerShell为Windows平台上的IT事务管理工作提供了更高级的控制和自动化支持,更有利于提高IT专业人士和开发人员的工作效率。
市场上向IT专业人士介绍Windows PowerShell的书已经屡见不鲜,但从cmdlet、提供程序(Provider)类和宿主(Host)类开发方面来介绍PowerShell开发技术的书却寥寥无几。本书从使用Windows PowerShell软件包的过程入手,向读者介绍其中的基本概念、常用组件以及开发技术,试图弥补前面提到的图书市场空白。对于那些意图扩展Windows PowerShell的功能或者使用PowerShell扩展自己程序功能的开发人员来说,本书是最佳的
选择。
一般来说,在书写命令行工具时,程序员需要书写代码来完成参数解析、赋值绑定工作。此外,程序员还要书写代码,用来格式化命令输出信息。Windows PowerShell为程序员提供了一个自带解释器的运行时引擎,简化了参数解析、赋值绑定等繁琐的工作。当输出对象需要显示时,PowerShell也为程序开发人员提供了可定制的格式化功能。使用Windows PowerShell完成那些开发命令行工具时的常规事务,开发人员可以集中精力关注程序的业务逻辑问题,从而摆脱那些琐碎的小问题。
1.1Windows PowerShell设计原则
多年以来,广大用户对微软Windows操作系统上的系统管理工作提了许多意见,Windows Powershell就是对这些用户反馈信息的响应。最初,许多用户常常询问为什么像一些传统Unix系统上的外壳程序没有被授权并包含在Windows操作系统中。对于这个问题,我们认为,只有开发一种独立于那些传统外壳程序的全新外壳程序才能解决这个问题。这个想法进而分解为四条指导原则,这四个原则构成了设计PowerShell的指导思想。
1.1.1 保留用户已有的投资
一项新技术发布后,必须经历一定的时间才能被广泛采用。此外,客户很可能在原有技术上已经投资了很多,要他们抛弃已有的投资是不现实的。因此,PowerShell在本质上与现有的Windows管理技术完全兼容,保留了用户已有的投资。
事实上,在PowerShell环境中,操作系统原有的命令和脚本可以直接运行。PowerShell除了和.NET紧密结合外,它和COM、WMI和ADSI技术也几乎是无缝集成的。PowerShell提供了一个统一的操作环境,用户可以处理前面提到的各种对象,这是PowerShell的最大特色。在本章后面的PowerShell快速入门部分,您可以看到本设计原则和其他设计原则相关的代码演示。
1.1.2提供一个功能强大、面向对象的外壳程序
CMD.exe和其他的外壳程序都是基于文本的,也就是说在这些外壳程序中,命令接收文本输入,产生文本输出。在内部处理时,这些命令把文本转化为其他对象,但仍以文本方式进行输出。在传统外壳程序中,当许多简单的命令通过管道连接起来时,命令之间需要进行许多的文本处理工作才能产生需要的输出。这方面的工具比如SED、AWK和Perl,由于它们出色的文本处理能力,很受命令行脚本程序员的青睐。
……







点击看大图

加载中...
