Een asynchrone Configuration Manager-query uitvoeren met behulp van beheerde code
In Configuration Manager gebruikt u de methode ProcessQuery om een asynchrone query uit te voeren met behulp van de beheerde SMS-provider.
De eerste parameter van de methode ProcessQuery is een exemplaar van de klasse SmsBackgroundWorker die twee gebeurtenis-handlers biedt:
QueryProcessObjectReady. Deze gebeurtenis-handler wordt aangeroepen voor elk object dat door de query wordt geretourneerd. De gebeurtenis-handler biedt een IResultObject-object dat het object vertegenwoordigt.
QueryProcessCompleted. Deze gebeurtenis-handler wordt aangeroepen wanneer de query is voltooid. Het biedt ook informatie over eventuele fouten die optreden. Zie How to Handle Configuration Manager Asynchronous Errors by Using Managed Code (Asynchrone fouten verwerken met beheerde code) voor meer informatie over foutafhandeling.
De tweede parameter voor de methode ProcessQuery is de WQL-instructie voor de query.
Een asynchrone query uitvoeren
Een verbinding met de SMS-provider instellen. Zie Basisprincipes van SMS-provider voor meer informatie.
Maak het object SmsBackgroundWorker en vul de eigenschappen QueryProcessorObjectReady en QueryProcessorCompleted in met de namen van de callback-methode.
Roep vanuit het WqlConnectionManager-object dat u in stap één ophaalt het QueryProcessor-objectProcessQuery-methode aan om de asynchrone query te starten.
Voorbeeld
In het volgende voorbeeld worden query's uitgevoerd op alle beschikbare SMS_Collection objecten. In de gebeurtenis-handler worden in het voorbeeld verschillende eigenschappen van de verzameling naar de Configuration Manager-console geschreven.
Zie Aanroepen Configuration Manager codefragmenten voor meer informatie over het aanroepen van de voorbeeldcode.
public void QueryCollections(WqlConnectionManager connection)
{
try
{
// Set up the query.
SmsBackgroundWorker bw1 = new SmsBackgroundWorker();
bw1.QueryProcessorObjectReady += new EventHandler<QueryProcessorObjectEventArgs>(bw1_QueryProcessorObjectReady);
bw1.QueryProcessorCompleted += new EventHandler<RunWorkerCompletedEventArgs>(bw1_QueryProcessorCompleted);
// Query for all collections.
connection.QueryProcessor.ProcessQuery(bw1, "select * from SMS_Collection");
// Pause while query runs.
Console.ReadLine();
}
catch (SmsException ex)
{
Console.WriteLine("Failed to start asynchronous query: ", ex.Message);
}
}
void bw1_QueryProcessorObjectReady(object sender, QueryProcessorObjectEventArgs e)
{
try
{
// Get the collection.
IResultObject collection = (IResultObject)e.ResultObject;
//Display properties.
Console.WriteLine(collection["CollectionID"].StringValue);
Console.WriteLine(collection["Name"].StringValue);
Console.WriteLine();
collection.Dispose();
}
catch (SmsQueryException eX)
{
Console.WriteLine("Query Error: " + eX.Message);
}
}
void bw1_QueryProcessorCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Console.WriteLine("Done...");
}
Deze voorbeeldmethode heeft de volgende parameters:
Parameter | Type | Beschrijving |
---|---|---|
connection |
Beheerd: WqlConnectionManager |
Een geldige verbinding met de SMS-provider. |
De code compileren
Naamruimten
Systeem
System.Collections.Generic
System.ComponentModel
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Vergadering
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Robuust programmeren
De Configuration Manager uitzonderingen die kunnen worden gegenereerd, zijn SmsConnectionException en SmsQueryException. Deze kunnen samen met SmsException worden gevangen.
Zie ook
Overzicht van objectenConfiguration Manager Luie eigenschappen
Een Configuration Manager-objectklassemethode aanroepen met behulp van beheerde code
Verbinding maken met een Configuration Manager-provider met behulp van beheerde code
Een Configuration Manager-object maken met behulp van beheerde code
Een Configuration Manager-object wijzigen met behulp van beheerde code
Een synchrone Configuration Manager-query uitvoeren met behulp van beheerde code
Een Configuration Manager-object lezen met behulp van beheerde code
Luie eigenschappen lezen met behulp van beheerde code
Een synchrone Configuration Manager-query uitvoeren met behulp van beheerde code
uitgebreide WMI-querytaal Configuration Manager
Configuration Manager resultatensets
Configuration Manager speciale query's
Over query's