Como executar uma consulta de Configuration Manager assíncrona usando código gerenciado
Em Configuration Manager, para executar uma consulta assíncrona usando o Provedor de SMS gerenciado, você usa o método ProcessQuery.
O primeiro parâmetro do método ProcessQuery é uma instância da classe SmsBackgroundWorker que fornece dois manipuladores de eventos:
QueryProcessObjectReady. Esse manipulador de eventos é chamado para cada objeto retornado pela consulta. O manipulador de eventos fornece um objeto IResultObject que representa o objeto.
QueryProcessCompleted. Esse manipulador de eventos é chamado quando a consulta é concluída. Ele também fornece informações sobre todos os erros que ocorrem. Para obter mais informações, consulte Para obter informações sobre o tratamento de erros, consulte Como lidar com Configuration Manager erros assíncronos usando código gerenciado.
O segundo parâmetro do método ProcessQuery é a instrução WQL para a consulta.
Para executar uma consulta assíncrona
Configure uma conexão com o Provedor de SMS. Para obter mais informações, confira Os fundamentos do Provedor de SMS.
Crie o objeto SmsBackgroundWorker e preencha as propriedades QueryProcessorObjectReady e QueryProcessorCompleted com os nomes do método de retorno de chamada.
No objeto WqlConnectionManager obtido na primeira etapa, chame o método ProcessQuery do objeto QueryProcessor para iniciar a consulta assíncrona.
Exemplo
As consultas de exemplo a seguir para todos os objetos SMS_Collection disponíveis e, no manipulador de eventos, o exemplo grava várias das propriedades da coleção no console Configuration Manager.
Para obter informações sobre como chamar o código de exemplo, consulte Chamando Configuration Manager Snippets de Código.
public void QueryCollections(WqlConnectionManager connection)
{
try
{
// Set up the query.
SmsBackgroundWorker bw1 = new SmsBackgroundWorker();
bw1.QueryProcessorObjectReady += new EventHandler<QueryProcessorObjectEventArgs>(bw1_QueryProcessorObjectReady);
bw1.QueryProcessorCompleted += new EventHandler<RunWorkerCompletedEventArgs>(bw1_QueryProcessorCompleted);
// Query for all collections.
connection.QueryProcessor.ProcessQuery(bw1, "select * from SMS_Collection");
// Pause while query runs.
Console.ReadLine();
}
catch (SmsException ex)
{
Console.WriteLine("Failed to start asynchronous query: ", ex.Message);
}
}
void bw1_QueryProcessorObjectReady(object sender, QueryProcessorObjectEventArgs e)
{
try
{
// Get the collection.
IResultObject collection = (IResultObject)e.ResultObject;
//Display properties.
Console.WriteLine(collection["CollectionID"].StringValue);
Console.WriteLine(collection["Name"].StringValue);
Console.WriteLine();
collection.Dispose();
}
catch (SmsQueryException eX)
{
Console.WriteLine("Query Error: " + eX.Message);
}
}
void bw1_QueryProcessorCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Console.WriteLine("Done...");
}
Este método de exemplo tem os seguintes parâmetros:
Parâmetro | Tipo | Descrição |
---|---|---|
connection |
Gerenciado: WqlConnectionManager |
Uma conexão válida com o provedor de SMS. |
Compilando o código
Namespaces
System
System.Collections.Generic
System.ComponentModel
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Programação robusta
As exceções Configuration Manager que podem ser geradas são SmsConnectionException e SmsQueryException. Elas podem ser capturadas junto com SmsException.
Confira também
Visão geral dos objetosConfiguration Manager Propriedades Preguiçosas
Como chamar um método de classe de objeto Configuration Manager usando código gerenciado
Como se conectar a um provedor de Configuration Manager usando código gerenciado
Como criar um objeto Configuration Manager usando código gerenciado
Como modificar um objeto Configuration Manager usando código gerenciado
Como executar uma consulta de Configuration Manager síncrona usando código gerenciado
Como ler um objeto Configuration Manager usando código gerenciado
Como ler propriedades preguiçosas usando código gerenciado
Como executar uma consulta de Configuration Manager síncrona usando código gerenciado
Configuration Manager Linguagem de Consulta WMI Estendida
conjuntos de resultados Configuration Manager
Configuration Manager consultas especiais
Sobre consultas