Comment supprimer une catégorie d’un pilote Windows

Dans Configuration Manager, vous supprimez une catégorie d’un pilote Windows en supprimant l’identificateur unique de la catégorie de la propriété de tableau de CategoryInstance_UniqueIDs classe WMI SMS_Driver Server.

Pour supprimer une catégorie d’un pilote Windows

  1. Configurez une connexion au fournisseur SMS. Pour plus d’informations, consultez Notions de base du fournisseur SMS.

  2. Obtenez l’objet SMS_Driver du pilote dont vous souhaitez supprimer la catégorie.

  3. Obtenez l’identificateur de nom de catégorie à partir de l’objet classe WMI du serveur SMS_CategoryInstance qui correspond à la catégorie souhaitée.

  4. Supprimez l’identificateur de catégorie de la propriété de tableau d’objets CategoryInstance_UniqueIDsWMI Class SMS_Driver Server.

  5. Validez les modifications apportées à la classe WMI SMS_Driver Server .

Exemple

L’exemple de méthode suivant supprime une catégorie d’un pilote Windows. driverID est un objet de classe WMI SMS_Driver Server valide. Pour plus d’informations, consultez À propos de la gestion des pilotes de déploiement de système d’exploitation.

Pour plus d’informations sur l’appel de l’exemple de code, consultez Appel d’extraits de code 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;  
    }  
}  

L’exemple de méthode a les paramètres suivants :

Paramètre Type Description
Connection -Géré:WqlConnectionManager
- VBScript : SWbemServices
Connexion valide au fournisseur SMS.
driver -Géré: IResultObject
-Vbscript: SWbemObject
Pilote Windows. Il s’agit d’une instance de la classe WMI du serveur SMS_Driver.
categoryName -Géré: String
-Vbscript: String
Nom d’une catégorie existante. Cela correspond à la propriété SMS_CategoryInstance Server WMI Classe LocalizedCategoryInstanceName .

Compilation du code

Cet exemple C# nécessite :

Espaces de noms

Système

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programmation robuste

Pour plus d’informations sur la gestion des erreurs, consultez À propos des erreurs Configuration Manager.

Sécurité de .NET Framework

Pour plus d’informations sur la sécurisation des applications Configuration Manager, consultez Configuration Manager’administration basée sur les rôles.

Voir aussi

À propos de la gestion des pilotes de déploiement de système d’exploitation
Comment ajouter une catégorie à un pilote Windows