¿Cómo obtener una cuenta de resultados ManagementObjects (WMI) sin enumerar a través de la colección en .NET

StackOverflow https://stackoverflow.com/questions/2692994

Pregunta

Cuando se consultan para Gran cantidad de datos a través de WMI (decir las ventanas de eventos de registro Win32_NTLogEvent) Es muy útil saber qué tipo de números que está recibiendo en sí mismo antes de descargar todo el contenido. ¿Hay una manera de dos hacer esto?

Por lo que sé no hay un "select count (*) A partir de Win32_NTLogEvent" en WQL.

Por lo que sé la propiedad Count de la ManagementObjectCollection realidad a través enumera todos los resultados si usted tiene el conjunto de propiedades a REBOBINABLE falsa o verdadera.

Si no se puede hacer de .NET, puede hacerse utilizando directamente los objetos subyacentes IWbem Gracias

¿Fue útil?

Solución 2

Parece que no se puede hacer. La segunda mejor opción es la respuesta proporcionada anteriormente por Daryn.

Otros consejos

El subyacente IWbem también objetos devuelven una enumeración.
P.ej. Devuelve el IWbemServices :: ExecQuery Método un IEnumWbemClassObject

Sin embargo, ver Mejora de Enumeración Rendimiento por un par de ideas.
Cabe destacar que el WBEM_FLAG_FORWARD_ONLY.
Si estás en C # supongo que se llama ManagementObjectSearcher con conjunto EnumerationOptions.Rewindable a falso. Rebobinado es cierto por defecto, así apagarlo debe dar una cierta mejora.

(Usted también podría perfil para ver si hay alguna mejora en el rendimiento si sólo pide por un (clave) Propiedad de la consulta. P. ej Select RecordNumber FROM Win32_NTLogEvent en lugar de Select * FROM Win32_NTLogEvent.
En teoría no como necesitaría mucha información a una instancia, aunque en realityit todavía tiene que enumerar todo, y no recuerdo si alguna vez vi ninguna mejora de eso. Vale la pena una sincronización de encendido, sin embargo).

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