Windows PowerShell(下简称“PowerShell”)是微软公司为Windows环境所开发的Shell及脚本语言技术,采用命令行界面。第1个版本于2006年第4季度正式发布。它的出现标志着微软公司从传统擅长的图形化和桌面化的PC领域迈向了脚本化的服务器领域的重要一步。PowerShell是一种新的命令行外壳和脚本语言,提供了丰富的系统管理、控制和自动化任务功能,是一款既与对象的Shell,它建立在.NET Framework的基础上,能够运行在Windows XP SP2,Windows Vista,Windows 2003以及Windows 2008操作系统上,可使IT专业人员和开发人员控制和自动完成Windows和应用程序的强大之处在于可以调用.NET Framework中的类库,并很好地与微软之前图形化界面设计中使用的COM、ADO及XML等已有的Windows管理模型发生交互。
这项全新的技术提供了丰富的控制与自动化的系统管理能力;而脚本语言(Scripting language)则是用来编写程序的计算机语言。脚本语言通常都有简单、易学且易用的特性,目的是希望让开发人员快速完成程序的编写工作。
什么是PowerShell
PowerShell是一款基于对象的Shell,建立在.NET框架之上。目前支持.NET Framework 2.0/3.0/3.5,能够运行在Windows XP SP2、Windows server 2003、Windows Vista、Windows Server 2008和Windows 7等操作系统之上,同时支持操作WMI、COM、ADO.NET和ADSI等已有的Windows管理模型。
PowerShell是微软为Windows Server 2008及其他服务器端的产品开发的一种命令行的外壳和脚本语言,它提供了丰富的控制与自动化的系统管理功能。不仅适用于对新一代微软产品进行命令行下的管理,而且非常适合编写语法简洁且功能强大的批处理文件和脚本。
从Microsoft Exchange Server 2007开始,微软的新一代服务器产品已经逐渐开始支持PowerShell,因此PowerShell成了图形界面之外另一种强大的工作环境。但它与微软Windows最初的GUI设计定位并不矛盾,原有的GUI操作界面针对非技术用户。随着Windows的市场开拓以及用户反馈,微软意识到对于普通用户图形化工具管理计算机可能是一种完美的手段,但对于高级技术人员必须拥有一个强大的自动化计算机配置工具。针对Windows本身的设计结构,即面向对象的方式管理所提供的诸如COM和WMI等管理模型,而不同于传统Linux和Unix的通过System Call来管理系统配置。为此,微软开始推行在自己原有的.NET Framework框架之上运行的一种新的语言,通过它使用.NET框架强大的功能来操作Windows管理对象,这大概Windows PowerShell产生的初衷。
PowerShell的设计目标
Windows PowerShell是专为系统管理员设计的新Windows命令行外壳。该外壳程序包括交互式提示和脚本环境,二者既可以独立使用,也可以组合使用。与传统接受和返回文本的大多数外壳程序不同,PowerShell是在.NET公共语言运行时(CLR)和.NET Framework的基础上构建的,它接受和返回.NET对象。这一根本改变带来了管理和配置的全新工具和方法。Windows PowerShell引入了cmdlet(读作“command-let”)的概念,这是内置到外壳程序中的一种简单的单一功能命令行工具。可以分别使用每个cmdlet,但是组合使用这些简单工具执行复杂任务时才能发挥PowerShell强大的作用。
PowerShell的设计目标如下。
(1)特别为系统管理员设计的全新的Widows命令行Shell。
(2)与大多数接受并返回文本的Shell不同,PowerShell建立在.NET公共语言运行时和.NET框架之上,接受并返回.NET对象。
(3)引入了cmdlet的概念,这是内建在Shell中的简单且单一功能的命令行工具。
(4)除了提供对文件系统的访问外,还提供了对注册表和数字签名证书等其他数据存储的访问。
(5)可以在使用cmdlet的同时使用传统的Windows工具。
(6)提供新的且基于对象的接口模型。
PowerShell的设计定位
PowerShell不仅提供了相当于bash的命令行Shell,同时也内置脚本语言及辅助脚本程序的工具。PowerShell以.NET技术为基础,并且与现有的WSH保持回溯兼容。因此其脚本程序不仅能存取.NET CLR,也能使用现有的COM等技术。
PowerShell包含多种系统管理工具,以及简易且一致的语法,内建的cmdlet标准工具可以用来处理常见的系统管理工作,如登录数据库、管理系统服务及处理事件日志等。Exchange Server 2007及System Center Operations Manager 2007等服务器软件都将内建PowerShell。Monad是PowerShell正式发布前的项目代号,PowerShell将Windows环境各自分离的脚本语言(WSH)和操作指令重新紧密黏合,并让Windows拥有与Unix旗鼓相当的Shell环境的脚本语言,这样使得Windows更适合用于大型、复杂且重要的计算及运算环境。
微软重新使用命令行的原因
从1981年IBM推出内含微软16位版本的操作系统MS-DOS 1.0的个人PC开始,个人PC使用完全基于命令行的DOS操作系统。1985年微软发布了Microsoft Windows 1.0,由于当时人们青睐的GUI平台是GEM及Desqview/X,因此对其评价并不高。经过Windows 2.0/3.0/3.1/3.2,到Windows 95/NT/98/Me/2000,再到Windows XP、Windows Server 2003、Windows Vista、Windows Server 2008和Windows 7整个操作系统系列,微软逐渐占领了个人桌面PC操作系统。微软Windows操作系统开始的最大的卖点是图形化操作界面,但到了Windows Server 2008微软又再次推出命令行工具。
这既是技术的进步,也是时代的进步。从最初个人对计算机的了解不多,图形化界面的操作减低了复杂度,更利于用户掌握计算机。而随着PC的普及,对计算机的管理不能只停留在简单的图形化操作上。尤其是在计算机数量很大的情况下,逐台配置会消耗大量的精力。在Windows操作系统不断完善的过程中创建了如COM、WMI、ADO和XML等多种不同的管理模型,为了能够在系统管理中兼顾这些模型,微软重新推出命令行管理方式,以.NET Framework框架为基础,通过PowerShell来统一管理。这是一种新的命令行外壳和脚本语言,用于完成系统管理和自动化任务。
脚本在企业IT管理中占有越来越重要的角色,好的脚本可以提升管理工作的效率,也可以使IT管理更能适应灵活多变的业务需求。但脚本难学、难编写及难维护的特点,一直让大多数用户不能接受。微软新推出的PowerShell作为新一代交互式的命令行及基于任务脚本编写技术,在兼容现有脚本的同时,更针对系统管理任务提供全面的控制和自动操作,使脚本自动化管理得心应手。
学习方法
微软Windows操作系统最初的设计目标是面向非技术用户,甚至是对计算机不感兴趣的人群,因此真正自动化且强大的Shell一直不是微软公司关心的问题。随着Windows开拓市场,用户反馈以及Linux和Unix的发展,Windows原有的图形化界面成为其局限。微软意识到通过图形化工具管理一台计算机也许是最完美的手段,但是随着管理计算机数目的不断提升,必须依靠能够自动化计算机配置的工具。这是微软推出PowerShell的一个重要原因。
微软在发展Windows的脚本语言时不使用已有的Shell或者扩展cmd.exe的原因在于用户常见的bash和ksh是为Unix/Linux系统设计的优化后的Shell,从这些操作系统内核提供的System Call来看,Shell可以将内核的特性真正地表现出来。但Windows操作系统和Unix/Linux是完全不同,它通过面向对象的方式管理,提供了诸如COM和WMI等管理模型。传统的Shell输出信息是字符串,这样有利于统一处理。但是字符串也是唯一能够操作的对象,如果使用传统的Shell对Windows进行管理将会废弃Windows最擅长的面向对象的方法和概念。PowerShell开发团队为了能够为Windows提供更好的优化,而选择了重新创建一种新语言。
PowerShell最初的蓝本是Posix的Shell标准,并借鉴了大量的Perl语言中的精华,提供了一个基于对象的脚本环境。
Windows PowerShell入门主要面向之前没有Windows PowerShell背景知识的IT专业人员、系统管理员、程序员和高级用户。如果用户对bash、perl、.Net、WMI、COM和VBScript相关的知识有所了解将会对学习PowerShell能有较大的帮助,但理解本系列文章的内容并不假定或要求读者具备此方面的知识。但对于已掌握bash和ksh的用户,可能会存在困难的步骤是转换问题的处理方式和思维方式。因为PowerShell中不仅仅有字符串,而且有很多面向对象的方法。最初可能没有意识到在PowerShell中工作时,所有使用的都是.NET对象,.NET对象是.NET类的实例,包括数据及与其关联的操作,可对象视为具有属性(与特性类似)和方法(可以对对象执行的操作)的数据实体。这就需要读者在学习PowerShell的过程中能够举一反三,从软件工程的角度更好地理解计算机科学的内容,以对象化的思想来理解整个编程过程会帮助读者更快地学些掌握PowerShell的精髓。
总 结
PowerShell是门很强大的脚本语言,在本文介绍了PowerShell的设计目标和设计定位、微软重新使用命令行操作系统的原因,以及对PowerShell语言的学习方法。将会在后续的文章中介绍PowerShell的基本语法、基础应用和高级应用。基本语法部分详细介绍PowerShell的下载、安装、对象和对象类型、控制执行流、管道对象、运行脚本、运行函数、命令别名、提供程序、脚本文件、错误处理和调试,以及脚本签名等;在基础应用部分详细介绍Shell环境及其配置、扩展类型系统、获取帮助、进程和服务、以及输入和输出等;在高级应用部分详细介绍PC设置、PowerShell和万维网、服务器设置、与COM对象的交互、用WMI管理Windows、PowerShell扩展、PowerShell中的.NET事件、PowerTab对PoweShell的自动补全,以及PoweShell的安全性等。力图使读者能够学会如何通过PowerShell对Windows系统进行管理,学会独立地分析和解决实际问题,学会学习语言的基本方法。尽管本系列文章的重点是针对PowerShell的语法特性,但将会尽可能覆盖对编程思想的梳理和介绍,以便读者能在后续的实际工作中做到活学活用。
微软MSDN原文地址:http://msdn.microsoft.com/zh-cn/ff943793.aspx
赛迪网原文地址:http://news.ccidnet.com/art/32857/20100608/2081031_1.html
作者: 付海军
出处:http://fuhj02.blog.51cto.com
版权:本文版权归作者和51cto共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.shell.tor.hu
转载于:https://blog.51cto.com/lbrant/425103