Comment obtenir un compte de résultats ManagementObjects (WMI) sans la collection par l'énumération dans .NET
-
01-10-2019 - |
Question
Lors de l'interrogation pour les grandes ammount de données via WMI (dire que les fenêtres du journal des événements Win32_NTLogEvent), il est très utile de savoir quel genre de chiffres que vous vous embarquez avant de télécharger tout le contenu. Est-il possible de deux faire cela?
D'après ce que je sais qu'il n'y a pas "Select Count (*) FROM Win32_NTLogEvent" dans WQL.
D'après ce que je sais la propriété Count de la ManagementObjectCollection fait par tous énumère les résultats que vous avez l'ensemble de la propriété Rebobinables true ou false.
Si elle ne peut pas être fait dans .NET, il peut être fait en utilisant directement les objets sous-jacents IWbem Merci
La solution 2
Il semble que ce ne peut pas être fait. La meilleure chose est la réponse fournie ci-dessus par Daryn.
Autres conseils
Les objets sous-jacents IWbem renvoient également une énumération.
Par exemple. IWbemServices :: ExecQuery Méthode des rendements IEnumWbemClassObject
Cependant, voir Amélioration de la performance Enumeration pour un couple d'idées.
Notamment, le WBEM_FLAG_FORWARD_ONLY
.
Si vous êtes en C # Je devine que ce serait appeler ManagementObjectSearcher avec EnumerationOptions.Rewindable est déf false. Rebobinables est vrai par défaut, donc le mettre hors tension devrait donner une certaine amélioration.
(Vous pouvez également le profil pour voir s'il y a une amélioration de la performance si vous demandez simplement un (clé) propriété dans votre requête. Par ex Select RecordNumber FROM Win32_NTLogEvent
au lieu de Select * FROM Win32_NTLogEvent
.
En théorie, pas autant d'informations devrait être instancié, bien que dans realityit doit encore énumérer tout, et je ne me souviens pas si je voyais jamais une amélioration par rapport à cela. Mérite un chèque de temps, cependant.)