كيفية الحصول على عدد من الإدارة (نتائج WMI) دون التعداد من خلال المجموعة في .NET
-
01-10-2019 - |
سؤال
عند الاستعلام عن Ammount الكبيرة للبيانات من خلال WMI (قل أحداث Windows سجل Win32_ntlogevent) من المفيد جدًا معرفة نوع الأرقام التي تحصل عليها قبل تنزيل جميع المحتوى. هل هناك طريقة اثنان تفعل هذا؟
من ما أعرف أنه لا يوجد "تحديد عدد (*) من Win32_ntlogevent" في WQL.
من ما أعرف أن خاصية Count of the ManagementObjectCollection تعدد فعليًا من خلال جميع النتائج سواء كان لديك خاصية يمكن إعادة الترجيع إلى True أو False.
إذا كان لا يمكن القيام به في .NET ، فهل يمكن القيام به مباشرة باستخدام كائنات IWBEM الأساسية شكرًا
المحلول 2
يبدو أنه لا يمكن القيام به. أفضل شيء التالي هو الإجابة التي قدمها Daryn أعلاه.
نصائح أخرى
الكائنات IWBEM الأساسية أيضًا تُرجع التعداد.
على سبيل المثال iwbemservices :: execquery طريقة يعود ienumwbemClassObject
ومع ذلك ، انظر تحسين أداء التعداد لبضع أفكار.
والجدير بالذكر أن WBEM_FLAG_FORWARD_ONLY
.
إذا كنت في C# أعتقد أنه سيتصل ManagementObjectSears مع التعداد تعيين على خطأ. يمكن إعادة الترجيح بشكل افتراضي ، لذلك يجب أن يعطي إيقاف تشغيله بعض التحسن.
(يمكنك أيضًا الملف الشخصي لمعرفة ما إذا كان هناك أي تحسين للأداء إذا طلبت فقط خاصية (مفتاح) في استفسارك. على سبيل المثال Select RecordNumber FROM Win32_NTLogEvent
بدلاً من Select * FROM Win32_NTLogEvent
.
من الناحية النظرية ، لن تحتاج إلى إنشاء مثيل له ، على الرغم من أنه في الواقع لا يزال يتعين على تعداد كل شيء ، ولا أتذكر ما إذا كنت قد رأيت أي تحسن من ذلك. يستحق فحص التوقيت ، على الرغم من.)