Come ottenere un conteggio di ManagementObjects (risultati WMI), senza enumerare attraverso la raccolta in .NET

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

Domanda

durante la ricerca di Grandi quantità di dati attraverso WMI (diciamo le finestre eventi accedono Win32_NTLogEvent) è molto utile per sapere che tipo di numeri che stai entrando prima di scaricare tutto il contenuto. C'è un modo due fare questo?

Da quello che so non c'è "select count (*) FROM Win32_NTLogEvent" in WQL.

Da quello che so la proprietà Count del ManagementObjectCollection realtà enumera attraverso tutti i risultati se si dispone l'insieme di proprietà riavvolgibile true o false.

Se non può essere fatto in NET, può essere eseguita utilizzando direttamente gli oggetti IWbem sottostanti Grazie

È stato utile?

Soluzione 2

Sembra che non può essere fatto. La cosa migliore da fare è la risposta fornita in precedenza da Daryn.

Altri suggerimenti

Il sottostante IWbem oggetti anche restituire un'enumerazione.
Per esempio. restituisce il IWbemServices :: ExecQuery Metodo IEnumWbemClassObject

Tuttavia, vedere Miglioramento delle prestazioni Enumeration per un paio di idee.
In particolare, il WBEM_FLAG_FORWARD_ONLY.
Se siete in C # Sto indovinando che sarebbe chiamando ManagementObjectSearcher con EnumerationOptions.Rewindable impostata su false. Riavvolgibile è true per impostazione predefinita, in modo da spegnerlo dovrebbe dare qualche miglioramento.

(Si potrebbe anche profilo per vedere se c'è qualche miglioramento delle prestazioni se basta chiedere uno (chiave) immobili nella query. Ad es Select RecordNumber FROM Win32_NTLogEvent invece di Select * FROM Win32_NTLogEvent.
In teoria non tanto informazioni avrebbe bisogno di essere istanziati, anche se in realityit deve ancora elencare tutto, e non mi ricordo se ho mai visto alcun miglioramento da questo. Vale la pena di un controllo di temporizzazione, però.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top