Freigeben über


Entfernen einer Kategorie aus einem Windows-Treiber

In Configuration Manager entfernen Sie eine Kategorie aus einem Windows-Treiber, indem Sie den eindeutigen Bezeichner für die Kategorie aus der Arrayeigenschaft SMS_Driver Server-WMI-KlasseCategoryInstance_UniqueIDs entfernen.

So entfernen Sie eine Kategorie aus einem Windows-Treiber

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein. Weitere Informationen finden Sie unter Grundlagen des SMS-Anbieters.

  2. Rufen Sie das SMS_Driver-Objekt für den Treiber ab, aus dem Sie die Kategorie entfernen möchten.

  3. Rufen Sie den Kategorienamensbezeichner aus dem SMS_CategoryInstance Server-WMI-Klassenobjekt ab, das der gewünschten Kategorie entspricht.

  4. Entfernen Sie den Kategoriebezeichner aus der Objektarrayeigenschaft CategoryInstance_UniqueIDsSMS_Driver Server WMI Class.

  5. Committen Sie die Änderungen der SMS_Driver Server-WMI-Klasse .

Beispiel

Die folgende Beispielmethode entfernt eine Kategorie aus einem Windows-Treiber. driverID ist ein gültiges SMS_Driver Server-WMI-Klassenobjekt . Weitere Informationen finden Sie unter Informationen zur Treiberverwaltung für die Betriebssystembereitstellung.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.

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;  
    }  
}  

Die Beispielmethode verfügt über die folgenden Parameter:

Parameter Typ Beschreibung
Connection -Verwalteten:WqlConnectionManager
– VBScript: SWbemServices
Eine gültige Verbindung mit dem SMS-Anbieter.
driver -Verwalteten: IResultObject
-Vbscript: SWbemObject
Der Windows-Treiber. Es handelt sich um eine Instanz von SMS_Driver Server-WMI-Klasse.
categoryName -Verwalteten: String
-Vbscript: String
Der Name einer vorhandenen Kategorie. Dies entspricht der Eigenschaft SMS_CategoryInstance Server WMI Classe LocalizedCategoryInstanceName .

Kompilieren des Codes

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

Namespaces

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

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

Informationen zur Treiberverwaltung für die Betriebssystembereitstellung
Hinzufügen einer Kategorie zu einem Windows-Treiber