Compartilhar via


Como redefinir o cache de inventário de hardware

Em Configuration Manager, você redefine o cache de inventário de hardware conectando-se ao namespace do agente de inventário e excluindo a instância de status de ação de inventário para inventário de hardware.

Para redefinir o cache de inventário de hardware

  1. Conecte-se ao namespace do agente de inventário (root\ccm\invagt).

  2. Exclua a instância de status de ação de inventário para inventário de hardware ({00000000-0000-0000-0000-000000000001}).

Exemplo

O método de exemplo a seguir mostra como redefinir o cache de inventário de hardware conectando-se ao namespace do agente de inventário e excluindo a instância de status de ação de inventário para inventário de hardware.

Para obter informações sobre como chamar o código de exemplo, consulte Como chamar um método de classe de objeto Configuration Manager usando o 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;  
    }  
}  

Compilando o código

Este exemplo de C# requer:

Namespaces

System.Management

Programação robusta

Para obter mais informações sobre o tratamento de erros, consulte Sobre erros de Configuration Manager.

Segurança do .NET Framework

Para obter mais informações sobre como proteger aplicativos Configuration Manager, consulte Configuration Manager administração baseada em função.

Confira também

Configuration Manager Kit de Desenvolvimento de Software
Sobre Configuration Manager Inventário