第1章:使用Windows PowerShell第一步

Addison-Wesley出版社专业

您的新闻,观点和读者对行业最热门的争论反应源。

在这一章当中:

什么是Windows PowerShell中?

下载并安装PowerShell的社区扩展

测试WPS扩展

下载并安装PowerShellPlus

测试WPS IDE

本章介绍的Windows PowerShell,并帮助您设置环境。此外,该章提供了演示如何使用PowerShell几个简单的例子。

什么是Windows PowerShell中?

Windows PowerShell中(WPS)是基于控制台的系统管理和脚本在Windows平台上一个新的基于.NET的环境。它具有以下主要特点:

  • 一组命令称为命令行开关

  • 所有的系统和应用程序访问对象的组件对象模型(COM)库提供,在.NET Framework和Windows管理规范(WMI)

  • 通过命令行开关之间开展健全的互动流水线基于类型对象

  • 一个常见的导航范例为不同的分层或平信息存储(例如,文件系统,注册表,证书,活动目录,环境变量)

  • 一个简单易学,但功能强大的脚本语言,强和弱变量类型

  • 防止不必要的脚本执行的安全模型

  • 跟踪和调试功能

  • 到主机的能力WPS在任何应用程序

这本书包括语法和示例这些功能,除了最后一个,这是一种先进的话题,需要深入.NET语言的知识,如C#,C ++ / CLI或Visual Basic .NET。

历史一点点

在类似于DOS命令行窗口,在几乎不变的形式存活许多Windows版本。用WPS,微软现在提供了一个不只是UNIX外壳而竞争的继任者,它超越了他们的鲁棒性和优雅。WPS可以被称为UNIX外壳的Windows上使用.NET框架概念的适应,具有WMI的连接。

与Windows脚本宿主(WSH,发音为“愿望”)活动脚本是太复杂了许多管理员,因为它的前提关于面向对象的编程和COM多少知识。许多异常和不一致的COM化妆WSH和相关的组件库刻苦学习。

即使是在Windows Server 2003中的发展,微软承认,他们曾问UNIX管理员如何管理他们的操作系统。短期结果是大量的包含在Windows Server 2003中。但是其他的命令行工具,长期目标是取代DOS,就像一个新的,更强大的shell窗口的命令行窗口。

在Microsoft .NET Framework的于2002年发布,很多人都期待一个“WSH.NET。”然而,微软停止了新的WSH的发展为.NET Framework,因为它预见到使用基于.NET编程语言,如C#和Visual Basic .NET将需要管理员更加面向对象的软件开发知道。

微软认可的知名度和满意度的UNIX shell和决定合并UNIX外壳与.NET Framework的流水线概念。我们的目标是开发一个新的外壳,这是简单易用,但那样健壮的.NET程序。其结果是:WPS。

在第一个测试版,新壳被以代号Monad的在洛杉矶2003年10月的专业开发者大会(PDC)提出。中间名微软壳牌(MSH)和Microsoft命令外壳之后,外壳接受了它的最终名称,PowerShell中,在2006年5月WPS 1.0的最终版本发布于2006年11月11日在TechEd 2006上欧洲。


注意 -WPS 1.0的主要建筑师杰弗里Snover。他总是愿意谈论他的“宝贝”,并回答问题。在大型国际微软举行的会议,如专业开发者大会(PDC)和TechEd大会上,你可以很容易地找到他。他是唯一的人在微软展台戴领带。


为什么要使用WPS?

如果你需要一个理由来使用WPS,这就来了。只是考虑一个共同的管理任务在两个以下的解决方案WSH和WPS。

软件清单脚本是要提供将读取使用WMI安装MSI软件包。该脚本将得到几台电脑的信息,并总结在一个CSV文件的结果(softwareinventory.csv)。要查询的计算机的名称(或IP地址)从一个TXT文件读取(computers.txt)。

与WSH(清单1.1)的解决方案需要90行的代码(包括评论和参数化)。在WPS中,你可以做在短短的13号线(1.2上市)一样的东西。如果你不希望包括注释和参数,你只需要一条线(清单1.3)。

1.1上市软件清单解决方案1:WSH

显式的选项“---设置常量查找inputfilename = ”computers.txt“ 常量OutputFileName = ”softwareinventory.csv“ 常量查询=“SELECT * FROM的Win32_Product哪里都不LIKE“%微软%””点心objFSO‘文件系统对象昏暗objTX’TEXTFILE对象昏暗的供应商我‘反昏暗的电脑’当前的计算机名称昏暗InputFilePath OUTPUTFILE的'---创建路径‘为INPUTFILE暗淡OutputFilePath路径’对象上设置objFSO =的CreateObject( “Scripting.FileSystemObject的”) '---获取路径InputFilePath = GetCurrentPath& “\” &查找inputfilename OutputFilePath = GetCurrentPath& “\” &OutputFileName' ---创建头条打印 “计算机” 和 “;” &_ “名称”& “” &_ “说明” 和 “;” &_ “识别号” 和 “;” &_ “安装日期” 和 “;” &_ “安装目录” 和 “;” &_ “国家” 与“;”&_ “SKU数” 和 “;” &_ “供应商” 和 “;” &_ “版本” '---读计算机列表设置objTX = objFSO.OpenTextFile(InputFilePath)' ---遍历所有计算机这样做虽然不objTX.AtEndOfStream电脑= objTX.ReadLine I = I + 1 WScript.Echo “===电脑#” &I& “:” 与计算机GetInventory电脑循环 '---关闭输入文件objTX.Close' ===获取软件清单一个电脑分GetInventory(计算机)昏暗的objProducts昏暗昏暗objProduct objWMIService '---访问WMI设置objWMIService = GetObject的( “winmgmts:” &_ “{impersonationLevel =冒充} \\!” &电脑&_ “\ ROOT \ CIMV2”)' ---Execeute WQL查询设置objProducts = objWMIService.ExecQuery(查询)'---循环对于每个objProduct在objProducts打印_电脑& “” &_&objProduct.Name “;” &_&objProduct.Description “;” &_ objProduct.IdentifyingNumber& “;” &_ objProduct.InstallDate& “;” &_ objProduct.InstallLocation& “;” &_ objProduct.InstallState& “;” &_ objProduct.SKUNumber& “;” &_ objProduct.Vendor&“;“&_ objProduct.Version下一页尾子 '===打印子打印(一个或多个)昏暗objTextFile集objTextFile = objFSO.OpenTextFile(OutputFilePath,8,真)objTextFile.WriteLine小号objTextFile.Close结束子' ===获取路径此脚本功能GetCurrentPath GetCurrentPath = objFSO.GetFile(WScript.ScriptFullName).ParentFolder端功能

1.2上市软件清单解决方案2:WPS

#$设置=查找inputfilename “computers.txt” $ OutputFileName = “softwareinventory.csv” $查询=“SELECT * FROM的Win32_Product哪里都不供应商LIKE '%微软%'”#读计算机列表$计算机=获取内容$查找inputfilename#遍历所有计算机和读取WMI信息$软件= $计算机| {的foreach GET-WmiObject可以 - 查询$查询 - 计算机名$ _}#导出为CSV $软件|选择名称,描述,IdentifyingNumber,InstallDate,INSTALLLOCATION,InstallState,SKUNumber,供应商,版本|出口CSV $ OutputFileName -notypeinformation

1.3上市软件清单解决方案3:WPS管道命令

获取内容“computers.txt” |的foreach {GET-WmiObject可以-computername$ _ -query“SELECT * FROM的Win32_Product哪里都不供应商LIKE '%微软%'”} |出口-CSV “Softwareinventory.csv”-notypeinformation

下载并安装WPS

Windows Server 2008是第一个操作系统,包括在DVD WPS。然而,它是一个可以通过在Windows Server 2008服务器管理添加功能可以安装一个额外的功能。

WPS可以下载(见图1.1)和已安装的作为附加到以下操作系统:

  • Windows XP中的x86与Service Pack 2

  • Windows XP中与Service Pack 2的64位

  • 在Windows Server 2003 x86的带有Service Pack 1

  • 在Windows Server 2003 Service Pack 1与64位

  • Windows Server 2003的安腾带有Service Pack 1

  • Windows Vista中的x86

  • Windows Vista中的64位

需要注意的是WPS不包含在Windows Vista中,尽管Vista的UND WPS在同一天被释放。微软决定不出货与Vista任何基于.NET的应用程序。只有在.NET Framework本身是Vista的一部分。


PowerShell的下载页面 -http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx


图1.1

WPS下载网站

WPS需要.NET Framework 2.0或更高版本上运行WPS设置之前安装。因为Vista中附带的.NET Framework 3.0(这是2.0的超集),需要它没有安装.NET。但是,在Windows XP和Windows Server,您必须安装.NET Framework 2.0,3.0,或3.5第一(如果它们尚未被其他应用程序安装)。


微软的.NET Framework 3.0再发行组件包 -http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&displaylang=en


安装例程安装WPS的目录%SYSTEMROOT%\ SYSTEM32 \ WindowsPowerShell \ V1.0(在32位系统)或%SYSTEMROOT%\ SYSWOW64 \ WindowsPowerShell \ V1.0(用于64位系统)。安装过程中不能更改该文件夹。


小费 -如果由于某种原因,你要卸载WPS,请注意,WPS被认为是一个软件更新到Windows操作系统(即,不是一个正常的应用程序)。因此,在添加或删除程序的控制面板小程序,它不被列为一个程序;相反,它被列为所谓的修补程序的Windows(KB x)的更新。知识库(KB)数目在不同的操作系统而变化。但是,您可以识别在列表中的图标WPS安装(见图1.2)。在Windows XP和Windows Server 2003中,您必须检查显示更新复选框看到WPS安装。


以WPS测试运行

这部分包括一些命令,使您能够尝试一些WPS功能。WPS有两种模式,交互模式和脚本模式,分别覆盖。

图1.2

对于WPS的卸载选项是很难找到。(这个截图是从Windows Server 2003)

在交互模式WPS

首先,你会在交互模式下使用WPS。

启动WPS。一个空的WPS控制台窗口将显示(见图1.3)。乍一看,你可能看不到它和传统的Windows控制台多大区别。然而,在WPS更多的权力,因为你很快就会看到。

在命令提示,键入得到处理然后按回车键。本地计算机将显示所有正在运行的进程的列表(见图1.4)。这是您第一次使用一个简单的命令行开关WPS。


注意 -注意字母的大小写没有关系。WPS不大写和小写字母之间的命令行名称区分。


图1.3

清空WPS控制台窗口

图1.4获取进程命令行输出

在命令提示,键入得到服务我*。所有已安装服务的一个名称列表以字母开头一世在您的电脑会显示(见图1.5)。这是您第一次使用一个带参数的命令行的。

图1.5

Windows服务的过滤列表

类型得到-然后按Tab键几次。你会看到WPS通过与动词开头的所有命令行开关循环得到。微软称这个功能tab完成。在停止获取,事件日志。当您按下Enter键,WPS提示一个名为LOGNAME参数(见1.6)。日志名是必需的参数。打字后应用然后按回车键,你会看到在你的应用程序事件日志当前条目的一个长长的清单。

图1.6

WPS提示输入所需的参数

本节向您介绍了管道最后一个例子WPS的功能。同样,我们希望从Windows事件日志列表中的条目,但这次我们想只有一些条目。任务是获取适用于打印最新的十大事件。输入以下命令,它由通过管道连接的三个命令开关(见图1.7):

获取,事件日志系统|位置对象{$ _。源-eq “打印”}|选择-对象 - 第一10

需要注意的是WPS似乎卡住了几秒钟打印第一十个条目之后。这是正确的行为,因为第一个命令行(获取,事件日志)将收到的所有条目。过滤通过随后命令行开关完成(位置对象选择-对象)。不幸,获取,事件日志没有包含过滤机制。

图1.7

过滤事件日志条目

在脚本模式WPS

现在是时候尝试PowerShell的脚本模式,并结合了WPS脚本。甲WPS脚本是一个文本文件,它包括命令行开关/ PowerShell脚本语言(PSL)的元素。在这个例子中的脚本创建本地计算机上的一个新的用户帐户。

打开Windows记事本(或其他文本编辑器),并输入脚本代码以下行(其中包括注释,变量声明,COM库调用和shell输出):

1.4上市创建用户帐户

12 第1页
页面1的2
IT薪资调查:结果是