Een Configuration Manager query maken

In Configuration Manager maakt u een SMS_Queryop -gebaseerde query door een exemplaar van SMS_Query. Het SMS_Query klasseobject Expression definieert een WQL-query. Als u de queryresultaten wilt beperken tot een bepaalde verzameling, geeft u de verzamelings-id op in de LimitToCollectionID eigenschap.

Opmerking

Wanneer u een query maakt, wordt deze weergegeven in de Configuration Manager-console onder Query's.

Een query maken

  1. Stel een verbinding in met de sms-provider. Zie Basisprincipes van sms-provider voor meer informatie.

  2. Een exemplaar van SMS_Query maken.

  3. Vul de SMS_Query eigenschappen in.

  4. Commit het SMS_Query.

  5. Haal indien nodig het queryobject op en haal daar de query-id op.

Voorbeeld

Met de volgende voorbeeldmethode maakt u een SMS_Query klassequery die query's uitvoert voor alle systemen. De methode retourneert de query-id, die kan worden gebruikt als invoer voor het voorbeeld in How to run a Configuration Manager Query.

Zie Codefragmenten van Configuration Manager aanroepen voor meer informatie over het aanroepen van de voorbeeldcode.

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

De voorbeeldmethode heeft de volgende parameters:

Parameter Type Beschrijving
connection - Beheerd: WqlConnectionManager
- VBScript: SWbemServices
- Een geldige verbinding met de sms-provider.

De code compileren

Het C#-voorbeeld heeft de volgende compilatievereisten:

Naamruimten

Systeem

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

bijeenkomst

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Robuust programmeren

Zie Info over fouten in Configuration Manager voor meer informatie over foutafhandeling.

.NET Framework-beveiliging

Zie Rolgebaseerd beheer van Configuration Manager voor meer informatie over het beveiligen van Configuration Manager-toepassingen.

Zie ook

Informatie over Configuration Manager query'sEen Configuration Manager query uitvoeren