'Build and execute a wql query to fetch the specified list of fields from
the specified wmi_classname + where_clause, then return the results as
a list of simple class instances with attributes matching field_list.
If fields is left empty, select * and pre-load all class attributes for
each class returned.'

def fetch_as_classes(self, wmi_classname, fields=(), **where_clause):

    wql = ('SELECT    %s    FROM    %s' % (((fields and ',    '.join(fields)) or '*'), wmi_classname))
    if where_clause:
        wql += ('    WHERE    ' + '    AND    '.join([("%s    =    '%s'" % (k, v)) for (k, v) in where_clause.items()]))
    return [_wmi_result(obj, fields) for obj in self._raw_query(wql)]
