public System.Collections.Generic.IEnumerable <NativeCimClass> QueryClasses(NativeDestinationOptions options, string namespaceName, string queryDialect, string queryExpression)
        {
            var client = CreateClient(options, queryDialect);

            foreach (EndpointAddress item in client.EnumerateEPR(new Uri(CimNamespaces.CimNamespace), new Filter(queryDialect, new CimEnumerationFilter {
                Namespace = namespaceName, Filter = queryExpression
            }), BatchSize))
            {
                yield return(CimEnumerationHelper.CreateClass(item));
            }
        }
        public System.Collections.Generic.IEnumerable <NativeCimClass> QueryClasses(NativeDestinationOptions options, string namespaceName, string queryDialect, string queryExpression)
        {
            var context = new EnumerationContext(CimNamespaces.CimNamespace, new Filter(queryDialect, new CimEnumerationFilter {
                Namespace = namespaceName, Filter = queryExpression
            }), new Selector[0]);

            foreach (EndpointAddress address in _handler.Enumerate(context))
            {
                yield return(CimEnumerationHelper.CreateClass(address));
            }
        }
        private EnumerationClient CreateClient(NativeDestinationOptions options, string queryDialect)
        {
            string serverName = string.IsNullOrEmpty(options.ServerName) ? "localhost" : options.ServerName;

            serverName = "localhost";
            int    port    = options.DestinationPort <= 0 ? 5985 : options.DestinationPort;
            string prefix  = string.IsNullOrEmpty(options.UrlPrefix) ? "http://" : options.UrlPrefix;
            var    binding = new WSManBinding();
            ChannelFactory <IWSEnumerationContract> cf = new ChannelFactory <IWSEnumerationContract>(binding);

            cf.Credentials.UserName.UserName = options.UserName;
            cf.Credentials.UserName.Password = options.Password;

            EnumerationClient client = new EnumerationClient(true, new Uri(string.Format("{0}{1}:{2}/wsman", prefix, serverName, port)), cf);

            client.BindFilterDialect(queryDialect, typeof(CimEnumerationFilter));
            return(client);
        }