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 -Gehandhabt:WqlConnectionManager
– VBScript: SWbemServices
Eine gültige Verbindung mit dem SMS-Anbieter.
driver -Gehandhabt: IResultObject
– VBScript: SWbemObject
Der Windows-Treiber. Es handelt sich um eine instance der WMI-Klasse von SMS_Driver Server.
categoryName -Gehandhabt: 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 BetriebssystembereitstellungGewusst wie: Hinzufügen einer Kategorie zu einem Windows-Treiber