Partager via


Comment exécuter une requête Configuration Manager

Dans Configuration Manager, vous exécutez une SMS_Query requête basée en obtenant l’instance de requête, puis en exécutant la requête WQL dans la propriété d’objet SMS_QueryExpression.

Une fois que vous avez la requête WQL, vous pouvez exécuter la requête de manière synchrone ou asynchrone. L’exemple suivant est synchrone. Pour plus d’informations sur l’exécution asynchrone de la requête, consultez How to Perform an Asynchrone Configuration Manager Query by Using Managed Code et How to Perform an Asynchrone Configuration Manager Query by Using WMI. Dans ces exemples, remplacez la chaîne par select * from collection la valeur de propriété Expression .

Pour exécuter une requête

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

  2. Obtenez l’objet SMS_Query de la requête que vous souhaitez exécuter.

  3. Exécutez la requête identifiée par la propriété d’objet SMS_QueryExpression .

Exemple

L’exemple de méthode suivant exécute de façon synchrone la requête identifiée par le queryId paramètre .

Pour plus d’informations sur l’appel de l’exemple de code, consultez Appel d’extraits de code 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;  
    }  
}  

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

Paramètre Type Description
connection -Géré: WqlConnectionManager
- VBScript : SWbemServices
Connexion valide au fournisseur SMS.
queryID -Géré: String
-Vbscript: String
Identificateur de requête. Pour plus d’informations, consultez la propriété de SMS_Query classe QueryID .

Compilation du code

L’exemple C# présente les exigences de compilation suivantes :

Espaces de noms

Système

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programmation robuste

Pour plus d’informations sur la gestion des erreurs, consultez À propos des erreurs Configuration Manager.

Sécurité de .NET Framework

Pour plus d’informations sur la sécurisation des applications Configuration Manager, consultez Configuration Manager’administration basée sur les rôles.

Voir aussi

À propos des requêtes Configuration Manager
Guide pratique pour créer une requête Configuration Manager
Comment effectuer une requête Configuration Manager asynchrone à l’aide de code managé
Comment effectuer une requête Configuration Manager asynchrone à l’aide de WMI