Guide pratique pour 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 dans la propriété du tableau de classe WMI SMS_Driver Server CategoryInstance_UniqueIDs .

Pour supprimer une catégorie d’un pilote Windows

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

  2. Récupérez l’objet SMS_Driver pour le pilote dont vous souhaitez supprimer la catégorie.

  3. Récupérez l’identificateur de nom de catégorie à partir de l’objet de classe SMS_CategoryInstance Server WMI qui correspond à la catégorie souhaitée.

  4. Supprimez l’identificateur de catégorie de la propriété du tableau d’objets de classe WMI du serveur SMS_Driver CategoryInstance_UniqueIDs .

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

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 du système d’exploitation.

Pour plus d’informations sur l’appel de l’exemple de code, consultez Calling Configuration Manager Code Snippets (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 NageWqlConnectionManager
- VBScript : SWbemServices
Une connexion valide au fournisseur SMS.
driver - Géré : IResultObject
VBScript SWbemObject
Pilote Windows. Il s’agit d’une instance de SMS_Driver classe WMI du serveur.
categoryName - Géré : String
VBScript String
Nom d’une catégorie existante. Cela correspond à la propriété de la classe e WMI SMS_CategoryInstance Server LocalizedCategoryInstanceName .

Compilation du code

Cet exemple C# requiert :

Espaces de noms

Système

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programmation fiable

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

Sécurité du .NET Framework

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

Voir aussi

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