下面显示的脚本在Windows 8中运行良好数月。第一个脚本是调用第二个脚本的批处理文件。我也有一套'开始'和'停止'脚本。我使用它们来启动和停止一系列需要以延迟顺序启动的VM服务器。下面显示的这种“状态”脚本是三者中较短的一对,应该足以传达我正在做的事情。
显然我不是剧本大师;在查看了各种示例后,我将它们放在一起,并且它们可以正常工作。
我刚刚升级到Windows 8.1,脚本不再有效。它们只是“fall”,意味着.vbs不会执行任何命令。
有人可以提出可能存在的问题吗?升级后是否必须重新启动,因为它不会自动启动?我没记得必须启动WMI才能最初让它们运行,但是我之前做过这个并且可能已经忘记了。在我知道发生了什么事之前,我不想开始做事。
感谢。
最诚挚的问候, 艾伦
批处理文件:
@echo off
cscript c:\batchFiles\vmStatus.vbs
echo.
echo vmStatus.vbs completed
echo.
pause
.vbs文件
Option Explicit
Dim WMIService
Dim VMList
Dim VM
'Get instance of 'virtualization' WMI service on the local computer
Set WMIService = GetObject("winmgmts:\\.\root\virtualization")
'Get all the MSVM_ComputerSystem object
Set VMList = WMIService.ExecQuery("SELECT * FROM Msvm_ComputerSystem")
For Each VM In VMList
WScript.Echo "========================================"
WScript.Echo "VM Caption: " & VM.Caption
WScript.Echo "VM Name: " & VM.ElementName
WScript.Echo "VM GUID: " & VM.Name
WScript.Echo "VM State: " & VM.EnabledState
Next
答案 0 :(得分:0)
脚本停止工作原因的简单答案是访问服务的命名空间从Win 8更改为Win 8.1。下面的行显示了设置WMIService的正确名称空间。
Set WMIService = GetObject("winmgmts:\\.\root\virtualization\v2")
此MSDN post的链接显示了其他详细信息。
感谢Ansgar的帮助,因为你让我指向了正确的区域。
最诚挚的问候, 艾伦