2009-03-20 2 views
0

У меня есть интересная/раздражающая проблема с некоторыми VBScripts, запущенными на Windows 2003 Server (они отлично работают на XP).Ошибка WMI через некоторое время

Сценарии в основном периодически вызывают объекты 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-битный шестнадцатеричное число и I» я буду обновлять этот вопрос с ним в следующий раз, когда это произойдет, но мои поисковые запросы Google оказались очень универсальными страницами, поэтому я не уверен, что код поможет).

Он также используется врезаться из (та же ошибка) с помощью следующей строки, но я не видел проблемы с этим один, так как я изменил его использовать Win32_Perf Raw Data_PerfOS_Memory.

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

Полагаю, что это не связано с сетью, так как оно находится на одной машине.

Я также пытался установить objWMI на ничего и делать каждый getObject каждый раз через цикл, но это не помогло.

Еще одна возможная проблема: она фактически работает внутри рабочей станции VMWare (но это также и 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") 

(это один непрерывно переучреждения -created внутри цикла, поэтому я не думаю, что проблема связана с устаревшим соединением RPC).

+0

Об ошибках в событии, ничего? – lsalamon

+0

Ничего в телезрителе событий (я должен был упомянуть об этом). – paxdiablo

ответ

1

Ошибка 1722 (0x6BF): сервер RPC недоступен.

One предложения: бесплатно все объекты явно в вашем сценарии

Чтобы выполнить лучше диагностировать попробовать понюхать вашу сеть, используя Microsoft Network Monitor 3.2 и поиск проблемы.(посмотреть эту помощь How to capture network traffic with Network Monitor)

Хорошо выглядеть.

+0

Оказывается, это было частично исправление. Было несколько объектов, которые не были явно освобождены, хотя я бы и хотел, если бы переменные были назначены с чем-то другим или вышли за рамки. Другая половина проблемы поразила WMI как можно сильнее. – paxdiablo

+0

Когда я явным образом освободил все объекты, как только я их закончил, и только раз в десять секунд запрашивал WMI, проблема исчезла. Ну, он все равно может быть там, но мой процесс перезапускается каждую полночь, так что работающий медленный бит может заставить его совершать каждые 25 часов вместо трех-иш :-) – paxdiablo

+0

Итак, +1 и принимайте. Вы помогли мне избежать необходимости переписывать вещь в C. – paxdiablo

1

Если ваш скрипт проверяет все учетные записи пользователей при его запуске, взгляните на это исправление. Это всего лишь проблема 2003 года, которая может объяснить, почему она отлично работает в вашей системе XP.

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

Это вызывало некоторые случайные для нас проблемы на работе, которые не полностью соответствуют описанию в статье, но исправление действительно исправить наши проблемы.

+0

@Jerb, +1 для информации, но это не помогло решить конкретную проблему, с которой я столкнулся. – paxdiablo

Смежные вопросы