/// <summary> /// /// </summary> /// <param name="args">Named arguments used in "Where" field of WQL query</param> /// <returns></returns> public override Object CollectData(IDictionary <String, Object> args) { if (args == null) { throw new ArgumentNullException("args"); } if (this.conf.PerfCounters == null) { return(null); } String condition = String.Empty; condition = NamedArgumentHelper.Resolve(this.conf.Where, this.conf.WhereArgs, args); if (this.conf.PerfCounters == null || this.conf.PerfCounters.Count == 0) { return(null); } using (var result = WMIHelper.QueryInstacnes(this.conf.Namespace, this.conf.From, condition, this.selectedProperties)) { var mgmtObjs = result.Cast <ManagementObject>(); if (this.conf.ReturnValueType == MgmtObjectReturnValueType.Single) { var mgmtObj = mgmtObjs.FirstOrDefault(); return(SelectPerfCounter(mgmtObj, args)); } else { var list = new List <Object>(); foreach (var mgmtObj in mgmtObjs) { list.Add(SelectPerfCounter(mgmtObj, args)); } return(list); } } }