PowerShell基础教程一:WindowsPowerShell简介XP/Server2003/Vista/Server2008操作系统的脚本语言。包括Cmd.exe、SH、KSH、CSH以及BASHUnix在内的大多数外壳程序的操作方式都是在新的进程中执行命令或实用工具程序,并以文本格式向用户显示结果。多年以来,许多文本处理实用工具程序,如sed、AWK和PERL,都已逐渐发展为支持这种交互模式。这些外壳程序也会提供内置于外壳程序中并在外壳程序处理器中执行的命令,例如KSH中的typeset命令和以及Cmd.exe中的dir命令。在大多数外壳程序中,由于内置命令数量少,从而导致许多实用工具程序应运而生。针对这一点,WindowsPowerShell有不同的做法。◆WindowsPowerShell并不处理文本,而是处理以.NET平台为基础的对象;◆WindowsPowerShell附带了数量庞大的内置命令集和一致的接口;◆对于各个工具,全部的外壳程序命令都使用相同的命令剖析器,而非使用不同的剖析器,这项特点会使你更容易学会每种命令的使用方式。其中最棒的就是你完全不需要舍弃已使用习惯的工具,你可以继续在WindowsPowerShell中使用诸如Net、SC和Reg.exe等传统的Windows工具。WindowsPowerShellCmdletCmdlet(发音如“command-let”)是指在WindowsPowerShell中用来操作对象的单一功能命令。你可以依据其名称格式来加以辨识Cmdlet--以破折号(-)分隔的动词和名词,例如Get-Help、Get-Process和Start-Service。在传统的外壳程序中,命令是极为简单(例如attrib.exe)到极为复杂(例如netsh.exe)范围内的可执行程序。在WindowsPowerShell中,大多数Cmdlet都相当简单,而且设计成与其他Cmdlet结合使用。例如,getCmdlet只提取数据,setCmdlet只创建或修改数据,formatCmdlet只格式化数据,而outCmdlet只将输出导向到指定的目的地。每种Cmdlet都具备可在输入下列命令时加以显示的说明文件:get-helpcmdlet名称-detailedCmdlet说明文件包括了该Cmdlet的描述、命令语法、参数的描述以及示范该Cmdlet的使用范例。全新的脚本语言WindowsPowerShell由于下列原因使用其特有的语言,而不沿用既有的任何语言。◆WindowsPowerShell必须拥有可管理.NET对象的语言。◆这种语言必须提供使用Cmdlet的一致环境。◆这种语言必须支持复杂的工作,而且不能让简单工作变得复杂。◆这种语言必须与进行.NET程序设计时所使用的高级语言(例如C#)达成一致性。Windows命令和实用工具程序你可以在WindowsPowerShell中执行Windows命令行程序,而且可以在外壳程序中启动具有图形用户界面的Windows程序,例如记事本和计算器。你也可以提取程序所产生的文本,然后用与在使用Cmd.exe时的相同方式在此外壳程序中使用该段文本。处理对象也许开始时你可能并未察觉到,当你在WindowsPowerShell中执行工作时,实际上是在使用.NET对象。随着你的经验的不断累积,以及对象处理的效果更加明显,你将发现其实自己是在使用对象,甚至最后以对象为思考依据。从技术上来看,.NET对象是由数据以及与该数据关联的作业所组成的.NET类型例项。不过,你可以将对象当作拥有属性(类似特性)和方法(可以针对对象执行的动作)的数据实体。例如,当你在WindowsPowerShell中取得服务时,实际上你所取得的是代表该项服务的对象。当你在查看服务的相关信息时,你是在查看其服务对象的属性。同样地,当你启动服务时,也就是当你将该项服务的Status属性修改为started时,你正在使用该项服务对象的方法。所有相同类型的对象都会具有相同的属性和方法,不过,对象的每个实例属性值可以各不相同。例如,每个服务对象都具有Name和Status属性。不过,各个服务可以拥有不同的名称和状态。了解这些概念之后,这些对象就不难理解。若要找出Cmdlet会取得哪种对象类型,请使用管道运算符(|)将get命令的结果传送到Get-Member命令。例如,下列命令会将Get-Service命令所提取的对象传送Get-Member。get-service|get-memberGet-Member会显示该服务对象的相关信息,其中包括对象的Typename,以及包含此对象属性和方法的列表。TypeName:System.ServiceProcess.ServiceControllerNameMemberTypeDefinition------------------------NameAliasPropertyName=ServiceNameadd_DisposedMethodSystem.Voidadd_Disposed(EventHandlervalue)CloseMethodSystem.VoidClose()ContinueMethodSystem.VoidContinue()如需取得对象类型的相关信息,请复制和粘贴Typename(例如,System.ServiceProcess.ServiceController)到MSDN中。当找到类型时,你就可以读取相关MSDN子主题来认识以该类型为基础的对象的属性和方法,例如出现在WindowsPowerShell中的对象。若要找出特定对象的所有属性值,请使用管道运算符(|)将get命令的结果传送到Format-List或是Format-Table命令。请配合所有(*)的值来使用这些Formatcmdlet的Property参数。例如,若要找出系统中Schedule服务的所有属性,请输入:get-serviceschedule|format-list-property下面内容显示结果范例。Name:ScheduleCanPauseAndContinue:TrueCanShutdown:TrueCanStop:TrueDisplayName:TaskSchedulerDependentServices:{}MachineName:.ServiceName:ScheduleServicesDependedOn:{RpcSs}ServiceHandle:SafeServiceHandleStatus:RunningServiceType:Win32ShareProcessSite:Container:如果是第一次接触WindowsPowerShell,你还不需要熟知对象的每个细节,但是要对这个概念略有印象,因为你很快就能够应用这类对象来发挥其最大效益。对象管道使用对象的最大优点就是可以让命令更容易通过管道进行传递,也就是将某个命令的输出传递为另一个命令的输入。这种通信经常必须通过字符串操作将某种格式的输出转换成另一种格式,以及移除标题和栏标题。WindowsPowerShell会提供以对象为基础(而非以文本)的全新互动模式,负责接收对象的cmdlet,可以直接处理对象的属性和方法,而不需要进行任何转换或操作。用户可以依据名称引用对象的属性和方法,而不是计算数据在输出中的位置。在下面的范例中,IpConfig命令的结果会传递给Findstr命令。管道运算符(|)会将位于此命令左边的结果传递到命令的右边。在Microsoft®Windows®PowerShell中,你并不需要操作字符串或计算数据位移。PSipconfig|findstrAddressIPAddress............:172.28.21.5IPAddress............:172.30.160.225PowerShell基础教程二:WindowsPowerShell中的交互式和脚本与其他外壳程序一样,WindowsPowerShell支持完全交互式环境。在提示符下键入命令后,将处理该命令并在外壳程序窗口中显示输出。可以将命令输出发送到文件或打印机,也可以使用管道运算符(|)将输出发送到其他命令。对脚本的支持如果重复运行特定的命令或命令序列,或者如果开发一系列命令来执行复杂的任务,则会希望在文件中保存命令并执行命令文件,而不是在提示符下键入命令。保存有命令的文件称为脚本。WindowsPowerShell除了提供交互式界面外,还完全支持脚本。在WindowsPowerShell中,脚本文件的文件扩展名为.ps1。若要运行脚本,请在命令提示符下键入该脚本的名称。文件扩展名是可选的。例如:c:\test\testscript.ps1或c:\test\testscript即使脚本在当前目录中,也必须指定脚本文件的完全限定路径。若要指示当前目录,请键入目录名称或使用点(.)表示当前目录。例如:.\testscript.ps1虽然脚本在一些企业中非常有用--甚至是必需的,但是它们可以用于传播恶意代码。因此,WindowsPowerShell中的安全策略(称为执行策略)允许您确定脚本是否可以运行,以及它们是否必须包括数字签名。为了消除明显的风险,WindowsPowerShell中的执行策略都不允许通过双击脚本的图标来运行它。有关详细信息,请键入:get-helpabout_signingWindowsPowerShell还包括一种非常丰富的脚本语言,使用该语言可以创建从最简单到非常复杂的脚本。它支持用于循环、条件、流控制和变量赋值的语言结构。PowerShell基础教程三:WindowsPowerShell使用初步单击“开始”、“所有程序”、WindowsPowerShell1.0和WindowsPowerShell。若要从“运行”框启动WindowsPowerShell,请单击“开始”,再单击“运行”,然后键入:powershell若要从命令提示符(cmd.exe)窗口启动WindowsPowerShell,请在命令提示符下键入:powershell若要查看用于启动WindowsPowerShell的选项,请在命令提示符窗口中键入:powershell-?在WindowsPowerShell打开时,可以使用Get-Helpcmdlet查找帮助。在WindowsPowerShell命令提示符下,键入:get-help使用WindowsPowerShell本节介绍使用WindowsPowerShell的基本知识。首先介绍Get-Helpcmdlet,该cmdlet显示有关WindowsPowerShell中cmdlet和概念性主题的信息。然后,介绍几个基本的cmdlet,说明如何使用cmdlet参数,然后说明如何设置cmdlet输出的格式以获取有用显示中所需的数据。最后的主题说明如何使用别名以便更容易地使用WindowsPowerShell,如何在WindowsPowerShell中运行传统的Windows程序,以及如何管理错误。Get-Help:获取帮助Get-Helpcmdlet是用于了解WindowsPowerShell的有用工具。通过阅读cmdlet的说明、了解有关概念并浏览语言主题,您可以开始了解如何使用WindowsPowerShell了。感兴趣的第一个主题可能是帮助系统。若要显示有关WindowsPowerShell中帮助系统的信息,请键入:get-help然后,您可能会对了解几个基本的cmdlet(如Get-Help、Get-Command、Get-Process、Get-Service和Get-Eventlog)感兴趣。若要显示cmdlet的帮助的最简单视图,请键入“get-help”,后跟该cmdlet的名称。例如,若要获取Get-Commandcmdlet的帮助,请键入:get-helpget-command如果cmdlet帮