|   四、脚本编程初步  前面我们通过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查询信息,如何通过脚本访问对象的属性和方法。继续努力吧!
 |