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 availableC: 8,243,381,248 bytesD: 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查询信息,如何通过脚本访问对象的属性和方法。继续努力吧!
- 最新评论