Procédure pour créer une requête Configuration Manager

Dans le Configuration Manager, vous créez une SMS_Queryrequête basée sur la base de la création d’une instance de SMS_Query. L’objet SMS_Query de classe Expression définit une requête WQL. Si vous souhaitez limiter les résultats de la requête à une collection spécifique, spécifiez l’identificateur de la collection dans la LimitToCollectionID propriété.

Remarque

Lorsque vous créez une requête, elle s’affiche dans la console Configuration Manager sous Requêtes.

Pour créer une requête

  1. Établissez une connexion au fournisseur SMS. Pour plus d’informations, consultez Principes de base du fournisseur SMS.

  2. Créer un instance de SMS_Query.

  3. Remplissez les SMS_Query propriétés.

  4. Validez le SMS_Queryfichier .

  5. Si nécessaire, récupérez l’objet de requête et obtenez l’identificateur de requête.

Exemple

L’exemple de méthode suivant crée une requête de classe qui effectue une SMS_Query requête pour tous les systèmes. La méthode renvoie l’identificateur de requête, qui peut être utilisé comme entrée dans l’exemple dans How to Run a Configuration Manager Query.

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

Function CreateQuery(connection)
   On Error Resume Next

   Dim query
   Dim path

   ' Create a query object.
    Set query = connection.Get("SMS_Query").SpawnInstance_()

    If Err.Number<>0 Then
        Wscript.Echo "Couldn't create query object"
        CreateQuery = Null
        Exit Function
    End If

    ' Populate the object.
    query.Comments = "A query for all systems"
    query.Expression = "select Name, " + _
    "SMSAssignedSites, " +              _
    "IPAddresses, " +                   _
    "IPSubnets, " +                     _
    "OperatingSystemNameandVersion, " + _
    "ResourceDomainORWorkgroup, " +     _
    "LastLogonUserDomain, " +           _
    "LastLogonUserName, " +             _
    "SMSUniqueIdentifier, " +           _
    "ResourceId, " +                    _
    "ResourceType, " +                  _
    "NetbiosName " +                    _
    "from sms_r_system"
    query.LimitToCollectionID = nothing
    query.Name = "Query All Systems"
    query.TargetClassName = "SMS_R_System"

    ' Commit the object
    path = query.Put_

    If Err.Number<>0 Then
        Wscript.Echo "Couldn't commit the query"
        CreateQuery = Null
        Exit Function
    End If

    WScript.Echo "Query created"

    ' Get the object back to get the query identifier.
    Set query = connection.Get(path)
    CreateQuery = query.QueryID

End Function

public string CreateQuery(WqlConnectionManager connection)
{
    try
    {
        // Create an SMS_Query object.
        IResultObject query = connection.CreateInstance("SMS_Query");

        // Populate the object.
        query["Comments"].StringValue = "A query for all systems";
        query["Expression"].StringValue =
            "select Name, " +
            "SMSAssignedSites, " +
            "IPAddresses, " +
            "IPSubnets, " +
            "OperatingSystemNameandVersion, " +
            "ResourceDomainORWorkgroup, " +
            "LastLogonUserDomain, " +
            "LastLogonUserName, " +
            "SMSUniqueIdentifier, " +
            "ResourceId, " +
            "ResourceType, " +
            "NetbiosName " +
            "from sms_r_system";
        query["LimitToCollectionID"].StringValue = null;
        query["Name"].StringValue = "Query All Systems";
        query["TargetClassName"].StringValue = "SMS_R_System";

        // Commit the query.
        query.Put();

        // Get the query - allows access to the queryID.
        query.Get();

        // Return the query identifier.
        return query["QueryID"].StringValue;
    }
    catch (SmsException e)
    {
        Console.WriteLine("Failed to run the query: " + e.Message);
        throw;
    }
}

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

Paramètre Type Description
connection - Géré : WqlConnectionManager
- VBScript : SWbemServices
- Une connexion valide au fournisseur de SMS.

Compilation du code

L’exemple C# a 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, voir À propos des erreurs du Configuration Manager.

Sécurité de .NET Framework

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

Voir aussi

À propos des requêtes Configuration ManagerComment exécuter une requête Configuration Manager