Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In Configuration Manager erstellen Sie eine SMS_Query-basierte Abfrage, indem Sie eine instance 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 LimitToCollectionID Eigenschaft an.
Hinweis
Wenn Sie eine Abfrage erstellen, wird sie in der Configuration Manager-Konsole unter Abfragen angezeigt.
So erstellen Sie eine Abfrage
Richten Sie eine Verbindung mit dem SMS-Anbieter ein. Weitere Informationen finden Sie unter Grundlagen des SMS-Anbieters.
Erstellen Sie eine instance von SMS_Query.
Füllen Sie die
SMS_QueryEigenschaften aus.Commit für die
SMS_Query.Rufen Sie bei Bedarf das Abfrageobjekt und 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 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 hat die folgenden Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
connection |
- Verwaltet: WqlConnectionManager- VBScript: SWbemDienste |
- Eine gültige Verbindung zum SMS-Anbieter. |
Kompilieren des Codes
Für das C#-Beispiel gelten die folgenden Anforderungen für die Kompilierung:
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 Sichern von Configuration Manager-Anwendungen finden Sie unter rollenbasierte Verwaltung von Configuration Manager.
Siehe auch
Informationen zu Configuration Manager-AbfragenAusführen einer Configuration Manager-Abfrage