Windows自动化管理的实现(4)

四、脚本编程初步

前面我们通过SDK查看了Win32_LogicalDisk类和它的属性,下面来看看如何在脚本中访问这些信息。如果你的系统上安装了Microsoft Windows 2000 Resource Kit,\program files\resource kit文件夹下默认会有一个listfreespace.vbs脚本。这个脚本查询Win32_LogicalDisk类的各个对象,分别提取一组属性值:DeviceID,即驱动器标识符;FreeSpace,驱动器空闲空间的字节数。假设一台机器的A:是软盘驱动器,D:是CD-ROM驱动器,listfreespace.vbs的输出类如:

A:  not available
C:  8,243,381,248  bytes
D:  not available

下面显示了getfree.vbs脚本程序的代码,它用更少的代码获取类似的信息。启动getfree.vbs时要指定驱动器标识符,getfree.vbs将显示出驱动器空闲空间和文件系统类型。

' 变量声明
Dim driveArg, dObject, driveName
' 创建文件系统对象,并将该对象赋值
' 给dObject变量(drive object的缩写)
Set dObject = CreateObject("Scripting.FileSystemObject")
' 如果用户没有在命令行指定待查询的驱动器标识符,
' 则显示错误信息并停止运行脚本
If Wscript.Arguments.Count < 1 Then _
     Wscript.Echo "请在命令行参数中指定要查询的驱动器,例如C:",_ 
Wscript.Quit(1)
' 把用户指定的驱动器标识符提供给文件系统对象,
' 在driveArg中保存对应的绝对路径名
driveArg = dObject.GetAbsolutePathName(Wscript.Arguments(0))
' 获取用户指定的驱动器的名字
driveName = dObject.GetDriveName(driveArg)
' 提取指定驱动器的属性信息
' 在对话框中显示这些信息
With dObject.GetDrive(driveName)
     Wscript.Echo "驱动器", .DriveLetter,":空闲空间是",.Freespace / 1024,_
      "KB,文件系统是", .FileSystem  
End With
' 结束...
Set dObject = Nothing

在Windows命令行窗口中,执行“Wscript getfree.vbs c:”将显示出类如图五的结果。如果执行“Cscript getfree.vbs c:”,则提示信息以字符方式显示。

图五

又如,下面的VBScript脚本提示输入远程机器的名字,然后关闭指定的远程机器:

MachineName = InputBox("输入要关闭的远程机器名字")
Set OSSet = GetObject("winmgmts:{(Debug,RemoteShutdown)}//"& MachineName &"/root/cimv2")  
.ExecQuery("select * from Win32_OperatingSystem where Primary=true")
for each OpSys in OSSet
    OpSys.Shutdown()
next  

当然,如果只有本文的知识,你还不能算是一个WMI脚本编程的高手。但现在你已经了解了如何用SDK查询信息,如何通过脚本访问对象的属性和方法。继续努力吧!

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus