Teilen über


Erstellen einer Configuration Manager Abfrage

In Configuration Manager erstellen Sie eine SMS_Query-basierte Abfrage, indem Sie eine Instanz von SMS_Queryerstellen. Das SMS_Query Klassenobjekt Expression definiert eine WQL-Abfrage. Wenn Sie die Abfrageergebnisse auf eine bestimmte Sammlung beschränken möchten, geben Sie den Sammlungsbezeichner in der -Eigenschaft an LimitToCollectionID .

Hinweis

Wenn Sie eine Abfrage erstellen, wird sie in der Configuration Manager-Konsole unter Abfragen angezeigt.

So erstellen Sie eine Abfrage

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein. Weitere Informationen finden Sie unter Grundlagen des SMS-Anbieters.

  2. Erstellen Sie eine Instanz von SMS_Query.

  3. Füllen Sie die SMS_Query Eigenschaften auf.

  4. Committen Sie .SMS_Query

  5. Rufen Sie bei Bedarf das Abfrageobjekt ab, und rufen Sie den Abfragebezeichner ab.

Beispiel

Die folgende Beispielmethode erstellt eine SMS_Query Klassenabfrage, die alle Systeme abfragt. Die -Methode gibt den Abfragebezeichner zurück, der als Eingabe für das Beispiel in How to Run a Configuration Manager Query (Ausführen einer Configuration Manager Abfrage) verwendet werden kann.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.

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;  
    }  
}  

Die Beispielmethode verfügt über die folgenden Parameter:

Parameter Typ Beschreibung
connection -Verwalteten: WqlConnectionManager
– VBScript: SWbemServices
– Eine gültige Verbindung mit dem SMS-Anbieter.

Kompilieren des Codes

Das C#-Beispiel hat die folgenden Kompilierungsanforderungen:

Namespaces

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Robuste Programmierung

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.

.NET Framework-Sicherheit

Weitere Informationen zum Schützen Configuration Manager Anwendungen finden Sie unter Configuration Manager rollenbasierte Verwaltung.

Siehe auch

Informationen zu Configuration Manager Abfragen
Ausführen einer Configuration Manager Abfrage