Udostępnij za pośrednictwem


Jak usunąć kategorię ze sterownika systemu Windows

W programie Configuration Manager można usunąć kategorię ze sterownika systemu Windows, usuwając unikatowy identyfikator kategorii z właściwości tablicy klasy CategoryInstance_UniqueIDsSMS_Driver Server WMI.

Aby usunąć kategorię ze sterownika systemu Windows

  1. Skonfiguruj połączenie z dostawcą programu SMS. Aby uzyskać więcej informacji, zobacz Podstawy dostawcy programu SMS.

  2. Pobierz obiekt SMS_Driver dla sterownika, z który chcesz usunąć kategorię.

  3. Pobierz identyfikator nazwy kategorii z obiektu klasy WMI serwera SMS_CategoryInstance, który odpowiada żądanej kategorii.

  4. Usuń identyfikator kategorii z właściwości tablicy obiektów CategoryInstance_UniqueIDsklasy SMS_Driver Server WMI.

  5. Zatwierdź zmiany klasy WMI serwera SMS_Driver .

Przykład

Poniższa przykładowa metoda usuwa kategorię ze sterownika systemu Windows. driverID jest prawidłowym obiektem klasy WMI serwera SMS_Driver . Aby uzyskać więcej informacji, zobacz About Operating System Deployment Driver Management (Informacje o zarządzaniu sterownikami wdrażania systemu operacyjnego).

Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu programu Configuration Manager.

Sub RemoveDriverCategory(connection,driver,categoryName)  

    Dim results  
    Dim driverCategoryID  
    Dim category  
    Dim categories   
    Dim i  

    If IsNull(driver.CategoryInstance_UniqueIDs) _  
           or UBound (driver.CategoryInstance_UniqueIDs) = -1 Then  
        ' There are no categories, so quit.  
        Wscript.Echo "No categories found"  
        Exit Sub  
    End If    

     Set results = _  
      connection.ExecQuery("SELECT * From SMS_CategoryInstance WHERE LocalizedCategoryInstanceName = '" _  
      + categoryName+ "'")  

    ' If the category was found, delete, if it is there, from the driver.  
    For Each category In results  

        ' Destination for copied categories.  
        categories = Array(driver.CategoryInstance_UniqueIDs)  
        i=0   

        For Each driverCategoryID in driver.CategoryInstance_UniqueIDs  
            If driverCategoryID = category.CategoryInstance_UniqueID Then  
                ' Found it, so skip it.  
                 Redim Preserve categories (UBound(categories))  
            Else  
                ' Copy the category.  
                categories(i) = driverCategoryID  
                i=i+1  
            End If   
        Next   

        ' Make sure the array is empty.  
        if i = 0  Then  
            Redim categories(-1)  
        End If  

         driver.CategoryInstance_UniqueIDs = categories  
         driver.Put_  
    Next  
End Sub     
public void RemoveDriverCategory(WqlConnectionManager connection,  
    IResultObject driver,  
    string categoryName)  
{  
    try  
    {  
        // Get the category.  
        IResultObject results =   
            connection.QueryProcessor.ExecuteQuery(  
            "SELECT * From SMS_CategoryInstance WHERE LocalizedCategoryInstanceName = '"   
            + categoryName   
            + "'");  

        ArrayList driverCategories = new ArrayList(driver["CategoryInstance_UniqueIDs"].StringArrayValue);  

        // Remove the category from the driver.  
        foreach (IResultObject category in results)  
        {  
            driverCategories.Remove(category["CategoryInstance_UniqueID"].StringValue);  
        }  

        // Update the driver.  
        driver["CategoryInstance_UniqueIDs"].StringArrayValue = (string[])driverCategories.ToArray(typeof(string));  
        driver.Put();  
    }  
    catch(SmsException e)  
    {  
        Console.WriteLine("Failed to remove category :" + e.Message);  
        throw;  
    }  
}  

Przykładowa metoda ma następujące parametry:

Parametr Wpisać Opis
Connection -Zarządzane:WqlConnectionManager
- VBScript: SWbemServices
Prawidłowe połączenie z dostawcą programu SMS.
driver -Zarządzane: IResultObject
- VBScript: SWbemObject
Sterownik systemu Windows. Jest to wystąpienie klasy WMI serwera SMS_Driver.
categoryName -Zarządzane: String
- VBScript: String
Nazwa istniejącej kategorii. Jest to zgodne z właściwością SMS_CategoryInstance Server WMI Classe LocalizedCategoryInstanceName .

Kompilowanie kodu

Ten przykład języka C# wymaga:

Przestrzenie nazw

System

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Montaż

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Niezawodne programowanie

Aby uzyskać więcej informacji na temat obsługi błędów, zobacz About Configuration Manager Errors (Informacje o błędach programu Configuration Manager).

Zabezpieczenia programu .NET Framework

Aby uzyskać więcej informacji na temat zabezpieczania aplikacji programu Configuration Manager, zobacz Administracja oparta na rolach programu Configuration Manager.

Zobacz też

Informacje o zarządzaniu sterownikami wdrażania systemu operacyjnego
Jak dodać kategorię do sterownika systemu Windows