Een Configuration Manager-query uitvoeren
In Configuration Manager voert u een op basis van een SMS_Query
query uit door het queryexemplaren op te halen en vervolgens de WQL-query uit te voeren in de SMS_Query
objecteigenschapExpression
.
Nadat u de WQL-query hebt uitgevoerd, kunt u de query synchroon of asynchroon uitvoeren. Het volgende voorbeeld is synchroon. Zie Een Asynchrone Configuration Manager-query uitvoeren met beheerde code en Een Asynchrone Configuration Manager-query uitvoeren met behulp van WMI voor meer informatie over het asynchroon uitvoeren van de query. Wijzig in deze voorbeelden de select * from collection
tekenreeks in de Expression
eigenschapswaarde.
Een query uitvoeren
Een verbinding met de SMS-provider instellen. Zie Basisprincipes van SMS-provider voor meer informatie.
Haal het
SMS_Query
object op voor de query die u wilt uitvoeren.Voer de query uit die wordt geïdentificeerd door de
SMS_Query
eigenschap objectExpression
.
Voorbeeld
Met de volgende voorbeeldmethode wordt de query die is geïdentificeerd door de queryId
parameter synchroon uitgevoerd.
Zie Aanroepen Configuration Manager codefragmenten voor meer informatie over het aanroepen van de voorbeeldcode.
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;
}
}
De voorbeeldmethode heeft de volgende parameters:
Parameter | Type | Beschrijving |
---|---|---|
connection |
-Beheerd: WqlConnectionManager - VBScript: SWbemServices |
Een geldige verbinding met de SMS-provider. |
queryID |
-Beheerd: String -Vbscript: String |
Een query-id. Zie de SMS_Query klasse-eigenschap QueryID voor meer informatie. |
De code compileren
Het C#-voorbeeld heeft de volgende compilatievereisten:
Naamruimten
Systeem
System.Collections.Generic
System.Text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Vergadering
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Robuust programmeren
Zie Over Configuration Manager fouten voor meer informatie over foutafhandeling.
.NET Framework Beveiliging
Zie Configuration Manager op rollen gebaseerd beheer voor meer informatie over het beveiligen van Configuration Manager toepassingen.
Zie ook
Over Configuration Manager-query's
Een Configuration Manager-query maken
Een asynchrone Configuration Manager-query uitvoeren met behulp van beheerde code
Een Asynchrone Configuration Manager-query uitvoeren met behulp van WMI