升级到Windows 8.1后,为什么我的虚拟机VBS脚本停止工作?

时间:2014-11-07 18:24:24

标签: batch-file vbscript windows-8.1

下面显示的脚本在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

1 个答案:

答案 0 :(得分:0)

脚本停止工作原因的简单答案是访问服务的命名空间从Win 8更改为Win 8.1。下面的行显示了设置WMIService的正确名称空间。

Set WMIService = GetObject("winmgmts:\\.\root\virtualization\v2")

MSDN post的链接显示了其他详细信息。

感谢Ansgar的帮助,因为你让我指向了正确的区域。

最诚挚的问候, 艾伦