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.
Um eine asynchrone Abfrage auf einem Configuration Manager Client-WMI-Namespace (Windows Instrumentation) auszuführen, erstellen Sie ein ManagementObjectSearcher Objekt, das eine WQL-Abfrage angibt. Anschließend erstellen Sie eine ManagementOperationObserver , die einen Ereignishandler für jedes Abfrageergebnis und auch für das Ende der Abfrage angibt.
Die asynchrone Abfrage wird ausgeführt, wenn die ManagementObjectSearcher objectGet-Methode mit dem ManagementOperationObserver Objekt aufgerufen wird.
So führen Sie eine asynchrone Abfrage durch
Verbindung mit dem WMI-Namespace des Configuration Manager-Clients herstellen. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit dem WMI-Namespace des Configuration Manager-Clients mithilfe von System.Management.
Erstellen eines
ManagementObjectSearcherObjektsErstellen eines
ManagementOperationObserverObjektsFügen Sie dem Objekt eine
ObjectReadyEventHandlerMethode hinzuManagementOperationObserver.Fügen Sie dem Abschnitt eine
CompletedEventHandlerMethode zu .ManagementOperationObserverRufen Sie die Get-Methode des
ManagementObjectSearcherObjekts auf, und geben Sie dasManagmentOperationObserverObjekt als Parameter an.Stellen Sie sicher, dass Ihre Anwendung weiterhin ausgeführt wird, während die Abfrage ausgeführt wird.
Beispiel
Im folgenden C#-Codebeispiel werden asynchron Komponenten abgefragt, die auf einem Client installiert sind.
Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen einer WMI-Klassenmethode mithilfe von System.Management.
public void EnumerateInstancesAsync(ManagementScope scope)
{
try
{
// Instantiate an object searcher with the query.
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(scope, new
SelectQuery("CCM_InstalledComponent"));
// Create a results watcher object
// and handler for results and completion.
ManagementOperationObserver results = new
ManagementOperationObserver();
// Attach handler to events for results and completion.
results.ObjectReady += new
ObjectReadyEventHandler(this.NewObject);
results.Completed += new
CompletedEventHandler(this.Done);
Console.WriteLine("Installed Components");
Console.WriteLine("--------------------");
Console.WriteLine();
// Call the asynchronous overload of Get()
// to start the enumeration.
searcher.Get(results);
// Do something else while results
// arrive asynchronously.
while (!this.Completed)
{
System.Threading.Thread.Sleep(1000);
}
this.Reset();
}
catch (ManagementException e)
{
Console.WriteLine("Failed to run query: " + e.Message);
throw;
}
}
private bool isCompleted = false;
private void NewObject(object sender,
ObjectReadyEventArgs obj)
{
try
{
Console.WriteLine("Name: {0}, Version = {1}",
obj.NewObject["DisplayName"],
obj.NewObject["Version"]);
}
catch (ManagementException e)
{
Console.WriteLine("Error: " + e.Message);
}
}
private bool Completed
{
get
{
return isCompleted;
}
}
private void Reset()
{
isCompleted = false;
}
private void Done(object sender,
CompletedEventArgs obj)
{
isCompleted = true;
}
Diese Beispielmethode hat die folgenden Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
Scope |
ManagementScope |
Eine gültige ManagementScope. Der Pfad sollte "root\ccm" sein. |
Kompilieren des Codes
Namespaces
System.
System.Management.
Assembly
System.Management.
Robuste Programmierung
Die Ausnahme, die ausgelöst werden kann, ist System.Management.ManagementException.
Siehe auch
Informationen zur WMI-Programmierung in Configuration Manager
Aufrufen einer WMI-Klassenmethode mithilfe von System.Management
So stellen Sie mithilfe von System.Management eine Verbindung zum WMI-Namespace des Configuration Manager Clients her
So führen Sie mithilfe von System.Management eine synchrone Abfrage durch
So lesen Sie ein WMI-Objekt mit System.Management