如何运行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查询