Freigeben über


Zurücksetzen des Hardwareinventurcaches

In Configuration Manager setzen Sie den Hardwareinventurcache zurück, indem Sie eine Verbindung mit dem Bestands-Agent-Namespace herstellen und die Bestandsaktionsstatusinstanz für die Hardwareinventur löschen.

So setzen Sie den Hardwareinventurcache zurück

  1. Stellen Sie eine Verbindung mit dem Bestands-Agent-Namespace (root\ccm\invagt) her.

  2. Löschen Sie die Bestandsaktionsstatusinstanz für die Hardwareinventur ({00000000-0000-0000-0000-000000000001}).

Beispiel

Die folgende Beispielmethode zeigt, wie Sie den Hardwareinventurcache zurücksetzen, indem Sie eine Verbindung mit dem Bestands-Agent-Namespace herstellen und die Bestandsaktionsstatusinstanz für die Hardwareinventur löschen.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen einer Configuration Manager-Objektklassenmethode mithilfe von WMI.


Sub ResetHardwareInventoryCache()  

     ' Get a connection to the "root\ccm\invagt" namespace.  
    Dim locator  
    Set locator = CreateObject("WbemScripting.SWbemLocator")  
    Dim services  
    Set services = locator.ConnectServer( , "root\ccm\invagt")     

    ' Delete the specified InventoryActionStatus instance.  
    services.Delete "InventoryActionStatus.InventoryActionID='{00000000-0000-0000-0000-000000000001}'"        

    ' Display message.  
    wscript.echo "Reset Hardware Inventory cache."  

End Sub  


// How to Reset the Hardware Inventory Cache  
public void ResetHardwareInventoryCache()  
{  
    try  
    {  
        // Define the scope (namespace).  
        ManagementScope inventoryAgentScope = new ManagementScope(@"root\ccm\invagt");  

        // Load the class that you want to work with.  
        ManagementClass inventoryClass = new ManagementClass(inventoryAgentScope.Path.Path, "InventoryActionStatus", null);  

        // Query the class for the InventoryActionID object (create query, create searcher object, execute query).  
        ObjectQuery query = new ObjectQuery("SELECT * FROM InventoryActionStatus WHERE InventoryActionID = '{00000000-0000-0000-0000-000000000001}'");  
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(inventoryAgentScope, query);  
        ManagementObjectCollection queryResults = searcher.Get();  

        // Enumerate the collection to get to the result (there should only be one item returned from the query).  
        foreach (ManagementObject result in queryResults)  
        {  
            // Display message and delete the object.  
            Console.WriteLine("Resetting Hardware Inventory cache.");  
            result.Delete();  
        }  
    }  

    catch (System.Management.ManagementException ex)  
    {  
        Console.WriteLine("Failed to run action. Error: " + ex.Message);  
        throw;  
    }  
}  

Kompilieren des Codes

Für dieses C#-Beispiel ist Folgendes erforderlich:

Namespaces

System.Management

Robuste Programmierung

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.

.NET Framework-Sicherheit

Weitere Informationen zum Schützen Configuration Manager Anwendungen finden Sie unter Configuration Manager rollenbasierte Verwaltung.

Siehe auch

Configuration Manager Software Development Kit
Informationen zu Configuration Manager Inventory