Partager via


Comment ajouter une catégorie à un pilote Windows

Dans Configuration Manager, vous ajoutez une catégorie à un pilote Windows en ajoutant l’identificateur unique de la catégorie à la propriété de tableau de CategoryInstance_UniqueIDs classe WMI SMS_Driver Server. Le tableau contient un ou plusieurs identificateurs de chaîne qui correspondent à la valeur de la propriété classe CategoryInstance_UniqueIDWMI SMS_CategoryInstance Server. Il existe une instance de SMS_CategoryInstance objet WMI Class server pour chaque catégorie du système.

Remarque

L’identificateur unique d’une catégorie de pilote est ajouté au texte « DriverCategories ». Les autres types de catégorie ont un texte différent.

Une catégorie contient des informations de localisation et c’est à partir de la propriété classe LocalizedCategoryInstanceNameWMI SMS_CategoryInstance Server que le nom complet de la catégorie est obtenu.

Pour ajouter une catégorie à 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 auquel vous souhaitez ajouter une 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. Ajoutez l’identificateur de catégorie à la propriété de tableau d’objetsCategoryInstance_UniqueIDs WMI Class SMS_Driver Server.

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

Exemple

L’exemple de méthode suivant ajoute une catégorie à 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 AddDriverCategory(connection,driver,categoryName)  

    Dim categories  
    Dim category  
    Dim driverCategoryID  
    Dim categoryID  
    Dim results  
    Dim existingCategory  

    ' Find the category that matches the supplied category name.  
    Set results = _  
      connection.ExecQuery("SELECT * From SMS_CategoryInstance WHERE LocalizedCategoryInstanceName = '" _  
      + categoryName+ "'")  

    ' If the category was found, add it to the driver.  
    For Each category in results  

        If IsNull(driver.CategoryInstance_UniqueIDs) or UBound (driver.CategoryInstance_UniqueIDs) = -1 Then  
            ' It is empty. Add the category.  
            driver.CategoryInstance_UniqueIDs =  Array(category.CategoryInstance_UniqueID)  
         Else  

            ' Determine if the category is already applied to the driver.  
            For each existingCategory in driver.CategoryInstance_UniqueIDs   
                if existingCategory = category.CategoryInstance_UniqueID Then  
                    WScript.Echo "Already added"  
                    Exit Sub  
                End If  
            Next      

            ' Add the category.  
            categories = driver.CategoryInstance_UniqueIDs  
            Redim Preserve categories (UBound (driver.CategoryInstance_UniqueIDs)+1)  
            categories (Ubound (categories)) =  category.CategoryInstance_UniqueID   
            driver.CategoryInstance_UniqueIDs = categories  
        End If  

        driver.Put_         
    Next      
End Sub  
public void AddDriverCategory(  
    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);//;driverCategories);  

        foreach (IResultObject category in results)  
        {  
            foreach (string driverCategory in driverCategories)  
            {  
                // Do nothing if the driver already has the category.  
                if (driverCategory == category["CategoryInstance_UniqueID"].StringValue)  
                {  
                    Console.WriteLine("Already exists");  
                    return;  
                }  
           }  

            // Add the category to the action.  
           driverCategories.Add(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 add the 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é classe LocalizedCategoryInstanceNameWMI du serveur SMS_CategoryInstance.

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 supprimer une catégorie d’un pilote Windows