Pergunta

Nós temos uma aplicação .NET que usa WMI para reunir uma ampla gama de informações sobre máquinas em toda a rede, tais como a leitura do Win32_NTLogEvent para ver se o Symantec AntiVirus não escreveu nada. A multa consultas trabalho, mas depois de repetidamente executar uma consulta WMI erros "Falha genérico" vai começar a voltar. Isso acontece muito consistente após aprox. 125 chamadas. Reinicializar a máquina que está executando a consulta WMI contra, sempre corrige o erro ... que é até os próximos 125 consultas são executadas.

Parece que o repositório é bom e não podemos localizar quaisquer problemas de tamanho de arquivo de log.

Mais informações - Ran WMIDiag depois de receber o erro e encontrou -

25607 13:55:38 (1) !! ERRO: erros de operação WMI enumeração relatou: 2 ERRO (S)

25608 13:55:38 (0) ** - ROOT / CIMV2, SubClassesOf, '*', 0x80041006 -. (WBEM_E_OUT_OF_MEMORY) Não há memória suficiente para a operação

25609 13:55:38 (0) ** Registro MOF: 'C: \ WINNT \ System32 \ Wbem \ SNMPREG.MOF ' 25610 13:55:38 (0) ** - Root / CIMv2, InstancesOf, 'Win32_PerfFormattedData_PerfProc_Thread', 0x8007000E - Não existe memória suficiente para concluir esta operação ..

25611 13:55:38 (0) ** MOF Registro: 'C: \ Windows \ System32 \ WBEM \ WMI.MOF'

Alguém já viu isso? Ideias?

Foi útil?

Solução 2

Eu acredito que nós encontramos o problema. Para simplificar algumas das nossas consultas fomos adicionando algo como 1 = 1 na cláusula where para facilitar a construção da consulta. Removido a constante = constante e a uma consulta eu estava testando com passou de 40 segundos para .4 segundos e foi executado mais de 10.000 vezes sem gerar uma falha genérica (WBEM_E_OUT_OF_MEMORY).

Outras dicas

Vimos o erro "Falha na genérico" tantas vezes com consultas WMI diferentes que nós, basicamente, chegou à conclusão de que o WMI não é estável o suficiente para usar para outra coisa senão administração cru. Nossa única solução depois de meses de andar era para puxar todas as chamadas WMI e encontrar substitutos em chamadas de API puros. Eles sempre trabalho por um tempo, e depois falhar com "Erro genérico" (Eu sei que isto não é uma resposta, mas é uma experiência compartilhada e se alguém tiver uma resposta que eu ficaria muito feliz de ouvir sobre isso).

Windows Remote Management (WinRM) pode superar todos esses problemas. WinRM é a implementação Microsoft do protocolo WS-Management, um simples objeto padrão Access Protocol (SOAP) -baseado.

Eu tive um problema semelhante a este ao tentar desinstalar / instalar software em máquinas remotas via WMI.

O problema surge quando o seu perfil móvel está presente na máquina de destino. Isto pode ser devido a ter consultado o previusly WMI na máquina alvo.

Eu não sei se este é o mesmo problema, mas tenho que teve que colocar uma verificação no local para ver se o meu perfil é nos pasta Documents and Settings na máquina de destino antes de tentar desinstalar o software.

Estou assumindo que quando seu executar sua consulta é sua criar o seu perfil na máquina local.

Eu tenho uma mensagem de falha genérico qualquer momento que eu tinha tentado desinstalar o software em uma máquina que eu tinha trabalhado anteriormente em remotley.

Agora eu assegurar que antes de eu tentar desinstalar / instalar componentes de software remotley, que meu perfil é formulário removido da máquina de destino. Eu não tive nenhum problema desde então.

Espero que isso ajude alguém.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top