如何运行Configuration Manager查询

在 Configuration Manager中,通过获取查询实例,然后在 对象Expression属性中运行 WQL 查询,来运行SMS_Query基于的SMS_Query查询。

拥有 WQL 查询后,可以同步或异步运行查询。 以下示例是同步的。 有关异步运行查询的信息,请参阅如何使用托管代码执行异步Configuration Manager查询如何使用 WMI 执行异步Configuration Manager查询。 在这些示例中,将 select * from collection 字符串更改为 Expression 属性值。

运行查询

  1. 设置与 SMS 提供程序的连接。 有关详细信息,请参阅 SMS 提供程序基础知识

  2. SMS_Query获取要运行的查询的 对象。

  3. 运行由 对象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查询