У меня есть интересная / раздражающая проблема с некоторыми VBScripts, работающими на Windows 2003 Server (они отлично работают на 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-битное шестнадцатеричное число, и я обновлю этот вопрос в следующий раз, когда это произойдет, но мои поиски в Google показали очень общие страницы, поэтому я не уверен, что код поможет).
Он также использовался для сбоя (та же ошибка) со следующей строкой, но я не видел проблемы с этой строкой, поскольку я изменил ее на использование Win32_Perf Raw Data_PerfOS_Memory.
set colMem = wmi.execQuery("select AvailableKBytes" & _
" from Win32_PerfFormattedData_PerfOS_Memory",,48)
Я понял, что это не связано с сетью, поскольку оно на той же машине.
Я также пытался установить objWMI в ноль и каждый раз выполнять другой цикл getObject, но это не помогло.
Еще одна возможная проблема, она на самом деле работает внутри VMWare Workstation (но так же, как и с XP) - на следующей неделе я получу установку Win2k3 на физическом ПК, чтобы протестировать ее там.
Странно то, что иногда он часами работает без проблем, собирая данные и отправляя их в файл журнала. В других случаях он падает через десять минут.
Есть идеи от гуру Windows среди нас?
UPDATE:
Хорошо, наконец-то снова не получилось. Вот мое небольшое усилие при захвате экрана:
+-------------------------------------------------+
| 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).