Поделиться через


Выполнение запроса Configuration Manager

В Configuration Manager выполняется основанный SMS_Query запрос, получая экземпляр запроса, а затем выполняя WQL-запрос в свойстве SMS_Query объектаExpression.

После создания WQL-запроса можно выполнить запрос синхронно или асинхронно. Следующий пример является синхронным. Сведения об асинхронном выполнении запроса см. в разделах Выполнение асинхронного запроса Configuration Manager с помощью управляемого кода и Выполнение асинхронного запроса Configuration Manager с помощью WMI. В этих примерах измените select * from collection строку на Expression значение свойства.

Выполнение запроса

  1. Настройте подключение к поставщику SMS. Дополнительные сведения см. в статье Основы поставщика SMS.

  2. SMS_Query Получите объект для запроса, который требуется выполнить.

  3. Выполните запрос, определенный свойством SMS_Query объекта Expression .

Пример

В следующем примере метод синхронно выполняет запрос, определенный параметром 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

Майкрософт. ConfigurationManagement.ManagementProvider

Майкрософт. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Надежное программирование

Дополнительные сведения об обработке ошибок см. в разделе Сведения об ошибках Configuration Manager.

Безопасность .NET Framework

Дополнительные сведения о защите приложений Configuration Manager см. в статье Configuration Manager администрирование на основе ролей.

См. также

Сведения о запросах Configuration Manager
Создание запроса Configuration Manager
Выполнение асинхронного запроса Configuration Manager с помощью управляемого кода
Выполнение асинхронного запроса Configuration Manager с помощью WMI