在 Configuration Manager中,通过获取查询实例,然后在 对象Expression属性中运行 WQL 查询,来运行SMS_Query基于的SMS_Query查询。
拥有 WQL 查询后,可以同步或异步运行查询。 以下示例是同步的。 有关异步运行查询的信息,请参阅如何使用托管代码执行异步Configuration Manager查询和如何使用 WMI 执行异步Configuration Manager查询。 在这些示例中,将 select * from collection 字符串更改为 Expression 属性值。
运行查询
- 设置与 SMS 提供程序的连接。 有关详细信息,请参阅 SMS 提供程序基础知识。 
- SMS_Query获取要运行的查询的 对象。
- 运行由 对象 - Expression属性标识的- SMS_Query查询。
示例
以下示例方法同步运行由 queryId 参数标识的查询。
有关调用示例代码的信息,请参阅调用Configuration Manager代码片段。
Sub RunQuery(connection, queryId)
    Dim query
    Dim queryResults
    Dim queryResult
    ' Get query.
    Set query=connection.Get("SMS_Query.QueryID='" & queryId  & "'" )
    If err.number<>0 Then
        WScript.echo "Couldn't get Queries"
        Exit Sub
    End If
    ' Run query.
    WScript.echo query.Name
    WScript.echo "----------------------------------"
    Set queryResults=connection.ExecQuery(query.Expression)
    For Each queryResult In queryResults
        wscript.echo "     " & queryResult.Name
    Next
    If queryResults.Count=0 Then
        WScript.echo "      no query results"
    End If
End Sub
public void RunQuery(WqlConnectionManager connection, string queryId)
{
    try
    {
        // Get the query.
        IResultObject query = connection.GetInstance(@"SMS_Query.QueryID='" + queryId + "'");
        Console.WriteLine(query["Name"].StringValue);
        Console.WriteLine("----------------------------------");
        // Get the query results.
        IResultObject queryResults = connection.QueryProcessor.ExecuteQuery(query["Expression"].StringValue);
        bool resultsFound = false;
        foreach (IResultObject queryResult in queryResults)
        {
            resultsFound = true;
            Console.WriteLine(queryResult["Name"].StringValue);
        }
        if (resultsFound == false)
        {
            Console.WriteLine("     No query results");
        }
    }
    catch (SmsException ex)
    {
        Console.WriteLine("Failed to run query: " + ex.Message);
        throw;
    }
}
示例方法具有以下参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| connection | -管理: WqlConnectionManager- VBScript: SWbemServices | 与 SMS 提供程序的有效连接。 | 
| queryID | -管理: String- VBScript: String | 查询标识符。 有关详细信息, SMS_Query请参阅 类QueryID属性。 | 
编译代码
C# 示例具有以下编译要求:
命名空间
System
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
可靠编程
有关错误处理的详细信息,请参阅关于Configuration Manager错误。
.NET Framework 安全性
有关保护Configuration Manager应用程序的详细信息,请参阅Configuration Manager基于角色的管理。
另请参阅
关于Configuration Manager查询如何创建Configuration Manager查询如何使用托管代码执行异步Configuration Manager查询如何执行异步查询使用 WMI Configuration Manager查询