Pregunta

Tenemos una aplicación .NET que usa WMI para recopilar una amplia gama de información en las máquinas en toda la red, como leer el Win32_NTLogEvent para ver si Symantec Antivirus ha escrito algo. Las consultas funcionan bien, pero después de ejecutar repetidamente una consulta de WMI " Error genérico " Los errores comenzarán a volver. Esto sucede muy consistentemente después de aprox. 125 llamadas. Al reiniciar la máquina contra la que estamos ejecutando la consulta de WMI, siempre se corrige el error ... es decir, hasta que se ejecutan las siguientes 125 consultas.

Parece que el repositorio está bien y no podemos localizar ningún problema de tamaño de archivo de registro.

Más información - Corrió WMIDiag después de obtener el error y se encontró -

25607 13:55:38 (1) !! ERROR: Errores de operación de ENUMERACIÓN WMI informados: 2 ERROR (S)!

25608 13:55:38 (0) ** - ROOT / CIMV2, SubClassesOf, '*', 0x80041006 - (WBEM_E_OUT_OF_MEMORY) No hay suficiente memoria para la operación.

25609 13:55:38 (0) ** Registro de MOF: 'C: \ WINNT \ SYSTEM32 \ WBEM \ SNMPREG.MOF ' 25610 13:55:38 (0) ** - Root / CIMv2, InstancesOf, 'Win32_PerfFormattedData_PerfProc_Thread', 0x8007000E - No hay suficiente almacenamiento disponible para completar esta operación ..

25611 13:55:38 (0) ** Registro de MOF: 'C: \ WINDOWS \ SYSTEM32 \ WBEM \ WMI.MOF'

¿Alguien ha visto esto alguna vez? Ideas?

¿Fue útil?

Solución 2

Creo que hemos encontrado el problema. Para simplificar algunas de nuestras consultas, agregamos algo como 1 = 1 en la cláusula where para facilitar la creación de la consulta. Se eliminó la constante = constante y la única consulta con la que estaba probando pasó de 40 segundos a .4 segundos y se ha ejecutado más de 10,000 veces sin generar un error genérico (WBEM_E_OUT_OF_MEMORY).

Otros consejos

Vimos el " Fallo genérico " error tantas veces con diferentes consultas de WMI que, básicamente, llegamos a la conclusión de que WMI no es lo suficientemente estable como para utilizarlo para otra cosa que no sea la administración en bruto. Nuestra única solución después de meses de perder el tiempo fue retirar todas las llamadas de WMI y encontrar reemplazos en las llamadas API puras. Siempre trabajarán por un tiempo y luego fallarán con " Error genérico " (Sé que esto no es una respuesta, pero es una experiencia compartida y si alguien tiene una respuesta, me encantaría saberlo).

Windows Remote Management (WinRM) puede superar todos estos problemas. WinRM es la implementación de Microsoft del WS-Management Protocol, un protocolo estándar de acceso simple a objetos (SOAP).

Tuve un problema similar a este al intentar desinstalar / instalar software en máquinas remotas a través de WMI.

El problema surge cuando su perfil de roaming está presente en la máquina de destino. Esto puede deberse a que se consultó previamente el WMI en la máquina de destino.

No sé si este es el mismo problema, pero tengo que realizar una comprobación para ver si mi perfil está en la carpeta Documentos y Configuración en la máquina de destino antes de intentar desinstalar el software.

Supongo que cuando ejecuta su consulta, está creando su perfil en la máquina local.

Recibí un mensaje de error genérico cada vez que intenté desinstalar el software en una máquina en la que había trabajado remotamente.

Ahora me aseguro de que antes de intentar desinstalar / Instalar los componentes de software de forma remota, mi perfil se elimine de la máquina de destino. No he tenido problemas desde entonces.

Espero que esto ayude a alguien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top