Вопрос

У нас есть .NET-приложение, которое использует WMI для сбора широкого спектра информации о компьютерах по всей сети, например, для чтения Win32_NTLogEvent, чтобы узнать, написал ли что-нибудь Symantec Antivirus.Запросы работают нормально, но после повторного запуска запроса WMI "Общий сбой" начнут возвращаться ошибки.Это происходит очень последовательно после ок.125 звонков.Перезагрузка компьютера, на котором мы запускаем запрос WMI, всегда устраняет ошибку...это происходит до тех пор, пока не будут выполнены следующие 125 запросов.

Похоже, что с репозиторием все в порядке, и мы не можем обнаружить никаких проблем с размером файла журнала.

Дополнительная информация - Запустил WMIDiag после получения ошибки и нашел -

25607 13:55:38 (1) !!ОШИБКА:Сообщение об ошибках операции перечисления WMI:2 ОШИБКА (Ы)!

25608 13:55:38 (0) ** - ROOT/CIMV2, SubClassesOf, '*', 0x80041006 - (WBEM_E_OUT_OF_MEMORY) Недостаточно памяти для выполнения операции.

25609 13:55:38 (0) ** Регистрация Министерства финансов:'C:\WINNT\SYSTEM32\WBEM\SNMPREG.MOF ' 25610 13:55:38 (0) ** - Root/CIMv2, InstancesOf, 'Win32_PerfFormattedData_PerfProc_Thread', 0x8007000E - Недостаточно места для выполнения этой операции..

25611 13:55:38 (0) ** Регистрация Министерства финансов:'C:\WINDOWS\SYSTEM32\WBEM\WMI.MOF'

Кто-нибудь когда-нибудь видел это?Идеи?

Это было полезно?

Решение 2

Я считаю, что мы нашли проблему.Чтобы упростить некоторые из наших запросов, мы добавили что-то вроде 1 = 1 в предложение where, чтобы упростить построение запроса.Удалил константу =constant, и один запрос, с которым я тестировал, увеличился с 40 секунд до 0,4 секунды и выполнялся более 10000 раз без генерирования общего сбоя (WBEM_E_OUT_OF_MEMORY).

Другие советы

Мы так много раз видели ошибку "Общий сбой" с различными запросами WMI, что в основном пришли к выводу, что WMI недостаточно стабилен, чтобы использовать его для чего-либо другого, кроме необработанного администрирования.Нашим единственным решением после нескольких месяцев возни было отключить все вызовы WMI и найти замены в чистых вызовах API.Они всегда будут работать некоторое время, а затем завершаться сбоем с "Общей ошибкой" (я знаю, что это не ответ, но это общий опыт, и если у кого-то есть ответ, я был бы очень рад услышать об этом).

Удаленное управление Windows (WinRM) может решить все эти проблемы.WinRM - это реализация Microsoft протокола WS-Management Protocol, основанного на стандартном протоколе простого доступа к объектам (SOAP).

У меня возникла аналогичная проблема при попытке удалить / установить программное обеспечение на удаленных компьютерах через WMI.

Проблема возникает, когда ваш перемещаемый профиль присутствует на целевом компьютере.Это может быть связано с предыдущим запросом WMI на целевой машине.

Я не знаю, та ли это проблема, но мне пришлось установить проверку, чтобы увидеть, находится ли мой профиль в папке "Документы и настройки" на целевом компьютере, прежде чем я попытаюсь удалить программное обеспечение.

Я предполагаю, что при выполнении вашего запроса он создает ваш профиль на локальном компьютере.

Я получал общее сообщение об ошибке каждый раз, когда пытался удалить программное обеспечение на компьютере, с которым ранее работал на remotley.

Теперь я гарантирую, что перед попыткой удаления / установки программных компонентов remotley мой профиль будет удален с целевого компьютера.С тех пор у меня не было никаких проблем.

Надеюсь, это кому-нибудь поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top