分享
 
 
 

WMI脚本初级读本(一)

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

[译者按]本人今日着迷于脚本,成天呆在Microsoft的网站上。遂决定将部分文件翻译过来,以兹共享。也希望大家能加入这个行列。另外,在翻译的过程中,只会注重重要的部分,某些无所谓的或者客套的东西就不花时间了,请原谅。还有,翻译水平和技术水平有限,不要见笑。

WMI脚本初级读本:第一部分

Greg Stemp, Dean Tsaltas, and Bob Wells

Microsoft Corporation

Ethan Wilansky

Network Design Group

June 13, 2002

摘要:Scripting Guys的第一个Scripting Clinic专栏。本文介绍了如何使用WMI脚本库创建有用的Windows系统管理脚本

WMI(Windows® Management Instrumentation)是Microsoft保持得最好的秘密,或者曾经被这样告知过。就是这样,没错的。WMI是Windows的主要管理允许技术。这对你意味着什么?好,如果你管理者Windows服务器和工作站,或者你创建Windows管理程序,你需要知道WMI.本文是教授WMI系列的第一部分,说准确点,是怎样使用WMI脚本库赖创建Windows大量的系统管理脚本。

(以下省略。主要是一些客套,感谢Andrew Clinick,不知是什么人。然后是介绍作者自己, Scripting Guys以及他们的业务)

What Is WMI?

WMI最初是作为Windows NT4.0 SP4的附加组件发布的,现在已成为Windows 2000,Windows XP,Windows.NET操作系统服务器家族的核心管理允许(management-enabling)技术。基于产业标准(由分布式管理任务组DMTF(Distributed Management Task Force )监督),WMI可以访问,配置,管理和检测所有-好,几乎所有-的Windows资源。

为掌握WMI的强大功能,想想你在去年甚至是今天是如何管理和检测Windows工作站和服务器的。可能你曾经用过或正在使用大量的图形界面的管理工具管理Windows资源,例如磁盘,事件日志,文件,文件夹,文件系统,网络组件,操作系统设置,性能数据,打印机,等等

尽管图形化工具提供了功能管理解决方案,但他们的共同点就是依赖Win32应用程序可编程接口(API)来访问和管理Windows资源。为什么?因为编程访问Windows资源的唯一方法就是通过Win32 API.这样Windows系统管理员没有简易的方法通过脚本语言来实现自动化的通用管理任务,因为大多数的脚本语言不能直接调用Win32 API.WMI改变了这一点,它提供了一个统一的模型和框架,通过这所有的Windows资源被暴露和描述。最好的事,系统管理员可以使用WMI脚本库来创建系统管理脚本,从而管理任何Windows资源。

使用Windows Script Host 和Microsoft Visual Basic® Scripting Edition (VBScript),或者任何支持COM自动化的脚本语言(例如,ActiveState Corporation's ActivePerl),可以为管理和自动化你的企业系统,应用程序和网络书写下列所述的脚本:

? Windows .NET Server, Windows XP Professional, and Windows 2000系统管理. 可以书写脚本来获取性能数据,管理事件日志,文件系统,打印机,矗立起,注册表,等等(下面的自己翻译吧 scheduler, security, services, shares, and numerous other operating system components and configuration settings.)

? 网络管理. 可以书写脚本来管理网络服务,例如DNS, DHCP, and SNMP-enabled devices.

? 实时监控. 通过使用事件订阅(event subscriptions),可以书写脚本来对以下资源监控并做出回应,如事件日志,文件系统和注册表更改,以及其他实时的操作系统更改。从概念上讲,WMI事件订阅和通告之于WMI与SNMP中段之于SNMP相同。

? Windows .NET Enterprise Server 管理. 可以书写脚本来管理Microsoft® Application Center, Operations Manager, Systems Management Server, Internet Information Server, Exchange Server, and SQL Server.

Quick Start to WMI Scripting

为对WMI脚本有初步了解,首先举个例子,获取远程基于Windows平台的电脑上安装的物理内存。在WMI之前,这个任务是不可能通过脚本简单地完成的,除非借助第三方的工具。事实上,在WMI之前,为以获取电脑安装物理内存的唯一方法就是通过System Properties对话框。现在,假定WMI安装在目标电脑并且你有权限操作目标电脑,就可以利用Listing 1那样简单的脚本完成该任务。

Listing 1. Retrieving total physical memory using WMI and VBScript

strComputer = "atl-dc-01"

Set wbemServices = GetObject("winmgmts:\\" & strComputer)

Set wbemObjectSet = wbemServices.InstancesOf("Win32_LogicalMemoryConfiguration")

For Each wbemObject In wbemObjectSet

WScript.Echo "Total Physical Memory (kb): " & wbemObject.TotalPhysicalMemory

Next

将上述脚本复制到文本编辑器,并且改变strComputer变量的值,然后保存以.vbs的扩展保存文件。按图一所示运行脚本

Figure 1. GetMemory.vbs output

神奇的现象出现了,你应该看到了目标电脑的物理内存。

假定你想获取远程电脑的所有服务的名字,状态和启动类型。见Listing 2的样例。注意Listing 2与Listing 1的步骤一致。

Listing 2. Retrieving services information using WMI and VBScript

strComputer = "atl-dc-01"

Set wbemServices = GetObject("winmgmts:\\" & strComputer)

Set wbemObjectSet = wbemServices.InstancesOf("Win32_Service")

For Each wbemObject In wbemObjectSet

WScript.Echo "Display Name: " & wbemObject.DisplayName & vbCrLf & _

" State: " & wbemObject.State & vbCrLf & _

" Start Mode: " & wbemObject.StartMode

Next

运行Listing 2的输出参见Figure 2.

Figure 2. GetServices.vbs output

假设你的兴趣不在于服务,而在于Windows事件日志。使用Listing 1的脚本模板,Listing 3可以轻易的实现。必须指出的事,如果日志包含上千条记录,可能会花费大量的时间运行。

Listing 3. Reading Windows event log records

strComputer = "atl-dc-01"

Set wbemServices = GetObject("winmgmts:\\" & strComputer)

Set wbemObjectSet = wbemServices.InstancesOf("Win32_NTLogEvent")

For Each wbemObject In wbemObjectSet

WScript.Echo "Log File: " & wbemObject.LogFile & vbCrLf & _

"Record Number: " & wbemObject.RecordNumber & vbCrLf & _

"Type: " & wbemObject.Type & vbCrLf & _

"Time Generated: " & wbemObject.TimeGenerated & vbCrLf & _

"Source: " & wbemObject.SourceName & vbCrLf & _

"Category: " & wbemObject.Category & vbCrLf & _

"Category String: " & wbemObject.CategoryString & vbCrLf & _

"Event: " & wbemObject.EventCode & vbCrLf & _

"User: " & wbemObject.User & vbCrLf & _

"Computer: " & wbemObject.ComputerName & vbCrLf & _

"Message: " & wbemObject.Message & vbCrLf

Next

仔细考察Listings 1, 2和3,可以得出两个非常重要的结论。第一个结论是三个脚本执行了相同的三个步骤:脚本连接WMI,获取WMI管理资源,然后返回资源属性。第二个重要的结论是唯一改变的是类名(即,Win32_LogicalMemoryConfiguration, Win32_Service和 Win32_NTLogEvent)和资源的相应属性。

三步骤对WMI脚本是通用的。下面仔细考察每一个步骤。

Step One: 连接WMI Service

任何脚本的第一个步骤就是与目标电脑上的Windows管理服务建立连接。连接本地或远程电脑的WMI很简单,调用VBScript的Getobject函数,其参数为WMI脚本库的标记名(即"winmgmts:")和目标电脑名

用这种方式连接WMI,会返回对SWbemServices对象的引用,在Listings 1, 2, 和 3中用变量名wbemServices引用。SWbemServices是在WMI脚本库中定义的。WMI脚本库提供通用功能对象集,脚本使用他们来访问WMI infrastructure。一旦引用了SWbemServices 对象,就可以调用SWbemServices提供的任何方法。InstancesOf就是这样一种方法

Step Two: 获取WMI管理资源

不可否认,第二步绝大程度上取决于要执行的任务。在获取有关WMI管理资源的信息时,第二步很简单,调用SWbemServices对象的InstancesOf方法。如同名字暗示的那样,InstancesOf 返回所有的由资源类名标识的管理资源。InstancesOf按SWbemObjectSet集合的方式返回请求的资源。再Listing 1,2和3中,使用变量名wbemObjectSet来引用。SWbemObjectSet是WMI脚本库定义的另外一个脚本对象

Step Three: 显示WMI管理资源的属性

最后一步是列举SWbemObjectSet 集合的内容。SWbemObjectSet 内的每一项是一个 SWbemObject (WMI脚本库的对象),他表示请求资源的单个实例。可以使用SWbemObject 来访问管理资源类定义中定义的方法和属性。

但如果获取WMI信息的脚本步骤是相同的,Win32_LogicalMemoryConfiguration, Win32_Service, 和 Win32_NTLogEvent的类是什么呢?更进一步,他们来自哪里,还有其他什么类,怎样使用他们呢?问题的答案在与

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有