您好,脚本专家! Excel 使用窍门.doc_第1页
您好,脚本专家! Excel 使用窍门.doc_第2页
您好,脚本专家! Excel 使用窍门.doc_第3页
您好,脚本专家! Excel 使用窍门.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上月一直在澳大利亚生活和工作, 当地同事的创造力和充沛精力总是让我大开眼界。 几 天前,那里的一个朋友带我和妻子一起外出就餐。他说餐馆离我们的酒店仅几步之遥。 四十分钟后,我们到达了一个非常漂亮的餐馆,此处可眺望悉尼港,悉尼歌剧院熠熠生 辉,宛如嵌入五彩沙滩的一枚贝壳。海港大桥(世界上最长的单跨桥)张开结实的臂膀挽起 两侧的半岛。 返回时,40 分钟的徒步之行并非一次短暂的闲庭漫步。而是之前需要 15 分钟热身和 伸展运动的日常锻炼。 我之所以喜欢此次澳大利亚之行, 原因之一是那里的同事看待问题的视角不同。 他们的 方法似乎别出心裁,常常与我的常规逻辑相悖。 在脚本编写领域,如果您头脑中抱定“经试用正确”这一方法,就极易变得墨守成规。很 多时候,您切实希望看到的就是使用相同的方法获取相同的结果。 以监控为例,通过使用 Windows PowerShell,可轻松地获取本地计算机上进程使用情 况的出色快照。利用 Get-Process cmdlet,您会得到条理清晰的输出,如图 1 所示。图 1 使用 Get-Process 查看本地进程Get-Process cmdlet 的结果在大部分场合都非常有用。它们显示了处于打开状态的句柄 数量、各种内存占用视图以及 CPU 使用率的快照。当 Windows PowerShell 2.0 推出后, 您甚至可以使用 Get-Process 和 computername 参数从远程计算机检索这一概述信息。既 然有这些好处,那么究竟为什么有人会不厌其烦地研究其他产品? 问题在于冗长的数据背后隐藏着大量细节。 数据往往隐藏的是更为重要的细节。 尽管将 来 Windows PowerShell 2.0 会支持 computername 参数听起来令人振奋,但目前它对网络 管理员而言还是海市蜃楼。因此,我们不得不使用 Windows 管理规范 (WMI) 和 Win32_Process WMI 类来监视远程系统并以实用方式显示信息。 如果认为 Get-Process 的输 出内容非常丰富,请再仔细看看 Win32_Process 的输出(如图 2 所示)。图 2 利用 WMI 查看进程 那么, 如果网络管理员需要的是易于阅读的内存占用量报告, 这可怜的家伙该怎么办呢? 这正是您需要打破惯例思考、走出自己的圈子并转用 Excel 实现自动操作的地方。很可能 您的计算机上已安装了 Microsoft Office Excel。可能您像我们一样并非专家,但由于它是 Microsoft Office 系统的组件,所以也可以利用它。 自动化 Excel 有多难?实际上非常简单, 因为 Microsoft 已创建了专门用于处理 Excel 的自动化模型。 程序 ID 是 Excel.Application, 它是一个 COM 对象。 创建 Excel.Application 对象的实例时,Excel 会默认启动并运行,只是您看不见它。但是,可使用 visible 属性让 Excel 显示出来。以下代码显示了如何创建 Excel.Application 对象、查询 visible 属性的状态,然后将 visible 属性设为 true:PS C:> $excel = New-Object -ComObject Excel.ApplicationPS C:> $excel.VisibleFalsePS C:> $excel.Visible = $true然后,您会看到一个非常奇怪的 Excel 视图,它看起来就像 Excel 应用程序的一个外 壳(如图 3 所示)。没有工作簿、没有电子表格只是光秃秃的 Excel。图 3 光秃秃的 Excel没有工作簿或电子表格 我们需要将一个工作簿添加到应用程序中。为此,我们借助工作簿对象的 add 方法。 工作簿对象是从主 Excel.Application 对象进行访问的,正如您在此看到的,我们将工作簿 对象存储在一个名为 $workbook 的变量中:$workbook = $excel.Workbooks.add()现在,需连接特定的电子表格。默认情况下,工作簿添加到 Excel 时,会向其中添加 三个电子表格。这些电子表格可通过数字进行标识。在以下代码行中,连接第一个电子表格 并将返回的电子表格对象存储在名为 $sheet 的变量中:$sheet = $workbook.worksheets.Item(1)现在,可将数据写入该电子表格。Excel 电子表格中的信息存储在单元格中。由于单元 格位于电子表格之中,所以可使用 $sheet 变量中存储的电子表格对象访问特定的单元格。 具体方法是使用指代电子表格中行和列的数字。在 Excel 电子表格中,行是数字而列是字母,这一点有些让人迷惑。但使用自动化模型时,行和列均为数字。第一个数字是行,第二 个数字是列。只需对特定单元格进行赋值即可写入单元格:$sheet.cells.item(1,1) = "Test"向 Excel.Application 对象添加一个工作簿并将数据添加到电子表格中的单元格后, Excel 工作簿将如图 4 所示。图 4 向单元格添加值 了解这些内容后,让我们整理出有用的内容。从 WMI 获取进程信息集合,将每个进 程的名称和内存占用量写入 Excel 电子表格,然后创建一个图表来突出显示所用内存。这 正是 WriteProcessInformationToExcel.ps1 的功能所在。TechNet 杂志网站上有完整的 脚本。 脚本首先使用 Get-WmiObject cmdlet 检索有关进程的信息集合。使用 Win32_Process WMI 类获取该信息,并将其存储在 $processes 变量中:$processes = Get-WmiObject -class Win32_Process现在,创建 Excel.Application 对象的一个实例并将其存储在变量 $excel 中,然后显示 应用程序并添加一个工作簿。通常,决定执行的任意 Excel 自动化都要完成以上步骤。具 体代码如下:$excel = new-object -comobject excel.application$excel.visible = $true$workbook = $excel.workbooks.add()Excel 的一个不足是工作簿始终会创建三个电子表格。我们认为这一点非常浪费,因为 我们仅使用一个电子表格。幸运的是,可利用自动化删除多余的电子表格:使用工作表集合 连接第三个电子表格并调用 delete 方法。执行相同的操作删除第二个电子表格:$workbook.workSheets.item(3).delete()$workbook.WorkSheets.item(2).dele

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论