Выполнение запроса Configuration Manager
В Configuration Manager выполняется основанный SMS_Query
запрос, получая экземпляр запроса, а затем выполняя WQL-запрос в свойстве SMS_Query
объектаExpression
.
После создания WQL-запроса можно выполнить запрос синхронно или асинхронно. Следующий пример является синхронным. Сведения об асинхронном выполнении запроса см. в разделах Выполнение асинхронного запроса Configuration Manager с помощью управляемого кода и Выполнение асинхронного запроса Configuration Manager с помощью WMI. В этих примерах измените select * from collection
строку на Expression
значение свойства.
Выполнение запроса
Настройте подключение к поставщику SMS. Дополнительные сведения см. в статье Основы поставщика SMS.
SMS_Query
Получите объект для запроса, который требуется выполнить.Выполните запрос, определенный свойством
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