Comment effectuer une requête Configuration Manager asynchrone à l’aide de code managé

Dans Configuration Manager, pour effectuer une requête asynchrone à l’aide du fournisseur SMS managé, vous utilisez la méthode ProcessQuery.

Le premier paramètre de la méthode ProcessQuery est une instance de la classe SmsBackgroundWorker qui fournit deux gestionnaires d’événements :

  • QueryProcessObjectReady. Ce gestionnaire d’événements est appelé pour chaque objet retourné par la requête. Le gestionnaire d’événements fournit un objet IResultObject qui représente l’objet .

  • QueryProcessCompleted. Ce gestionnaire d’événements est appelé lorsque la requête est terminée. Il fournit également des informations sur les erreurs qui se produisent. Pour plus d’informations, consultez Pour plus d’informations sur la gestion des erreurs, consultez How to Handle Configuration Manager Asynchrone Errors by Using Managed Code.

    Le deuxième paramètre de la méthode ProcessQuery est l’instruction WQL pour la requête.

Pour effectuer une requête asynchrone

  1. Configurez une connexion au fournisseur SMS. Pour plus d’informations, consultez Notions de base du fournisseur SMS.

  2. Créez l’objet SmsBackgroundWorker et renseignez les propriétés QueryProcessorObjectReady et QueryProcessorCompleted avec les noms de méthode de rappel.

  3. À partir de l’objet WqlConnectionManager que vous obtenez à l’étape 1, appelez la méthode ProcessQuery de l’objet QueryProcessor pour démarrer la requête asynchrone.

Exemple

L’exemple suivant interroge tous les objets SMS_Collection disponibles et, dans le gestionnaire d’événements, il écrit plusieurs propriétés de collection dans la console Configuration Manager.

Pour plus d’informations sur l’appel de l’exemple de code, consultez Appel d’extraits de code Configuration Manager.

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...");  
}  

Cet exemple de méthode a les paramètres suivants :

Paramètre Type Description
connection Géré: WqlConnectionManager Connexion valide au fournisseur SMS.

Compilation du code

Espaces de noms

Système

System.Collections.Generic

System.ComponentModel

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programmation robuste

Les exceptions Configuration Manager qui peuvent être levées sont SmsConnectionException et SmsQueryException. Ceux-ci peuvent être regroupés avec SmsException.

Voir aussi

Vue d’ensemble des objetsConfiguration Manager propriétés différées
Comment appeler une méthode de classe d’objet Configuration Manager à l’aide de code managé
Comment se connecter à un fournisseur Configuration Manager à l’aide de code managé
Guide pratique pour créer un objet Configuration Manager à l’aide de code managé
Comment modifier un objet Configuration Manager à l’aide de code managé
Comment effectuer une requête de Configuration Manager synchrone à l’aide de code managé
Guide pratique pour lire un objet Configuration Manager à l’aide du code managé
Guide pratique pour lire des propriétés différées à l’aide de code managé
Comment effectuer une requête de Configuration Manager synchrone à l’aide de code managé
langage de requête WMI étendu Configuration Manager
Configuration Manager jeux de résultats
Configuration Manager requêtes spéciales
À propos des requêtes