-1

我对在 Windows 2003 Server 上运行的一些 VBScripts 有一个有趣/烦人的问题(它们在 XP 上运行良好)。

这些脚本基本上会定期调用 WMI 对象以提取性能信息并将其写入日志文件。它由每天早上 12:05 的计划任务启动并运行到午夜(或者如果它没有继续崩溃)。它归管理员所有,任务是"cscript xx.vbs blah blah blah".

有时它会运行几个小时,有时只运行几分钟。调用的形式为:

set objWMI = getObject("winmgmts:\\.\root\cimv2")
:   :   :
do lots of times:
    set itemCpu = wmi.get("Win32_PerfRawData_PerfOS_Processor.Name='_Total'")

它返回的错误是一个对话框,指出远程过程调用未能执行,但没有额外信息(它确实给出了一个 32 位十六进制数字,下次发生时我会用它更新这个问题,但我的谷歌搜索出现了非常通用的页面,所以我不确定代码是否会有所帮助)。

它也曾经在以下行中崩溃(同样的错误),但我没有看到这个问题,因为我将它更改为使用 Win32_Perf Raw Data_PerfOS_Memory。

set colMem = wmi.execQuery("select AvailableKBytes" & _
    " from Win32_PerfFormattedData_PerfOS_Memory",,48)

我认为它与网络无关,因为它在同一台机器上。

我还尝试将 objWMI 设置为空,并在每次循环中执行另一个 getObject ,但这没有帮助。

另一个可能的问题是,它实际上是在 VMWare Workstation 中运行的(但 XP 也是如此)——下周我将运行 Win2k3 的物理 PC 设置来测试它。

奇怪的是,它有时会运行几个小时而没有问题,收集数据并将其发送到日志文件。其他时候,它会在十分钟内崩溃。

我们中间的 Windows 专家有什么想法吗?

更新:

好吧,终于又失败了。这是我在屏幕截图上的一点努力:

+-------------------------------------------------+
|  Windows Script Host                          |X|
+-------------------------------------------------+
|  /   Script:   C:\Program Files\blah\blah.vbs  |
|  /\   Line:     271                             |
|       Char:     2                               |
|       Error:    The remote procedure call       |
|                 failed and did not execute.     |
|       Code:     800706BF                        |
|       Source:   SWbemServicesEx                 |
+-------------------------------------------------+

第 271 行是:

set itemCpu = wmi.get("Win32_PerfRawData_PerfOS_Processor.Name='_Total'")

之前wmi已设置为:

set wmi = getObject("winmgmts:\\.\root\cimv2")

(这个在循环中不断被重新创建,所以我认为 RPC 连接过时不是问题)。

4

2 回答 2

1

错误 1722(0x6BF) 是:RPC 服务器不可用。

一个建议:在脚本中明确释放所有对象

要执行最佳诊断,请尝试使用Microsoft Network Monitor 3.2嗅探您的网络并搜索问题。(查看此帮助How to capture network traffic with Network Monitor

好看。

于 2009-03-23T12:58:46.353 回答
1

如果您的脚本在运行时检查任何用户帐户,请查看此修补程序。它只是 2003 年的一个问题,这可以解释为什么它在您的 XP 系统上运行良好。

http://support.microsoft.com/kb/933593

它在工作中给我们造成了一些不完全符合文章描述的随机问题,但修复程序确实解决了我们的问题。

于 2009-03-23T16:18:34.517 回答