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_UniqueID
WMI 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 LocalizedCategoryInstanceName
WMI SMS_CategoryInstance Server que le nom complet de la catégorie est obtenu.
Pour ajouter une catégorie à un pilote Windows
Configurez une connexion au fournisseur SMS. Pour plus d’informations, consultez Notions de base du fournisseur SMS.
Obtenez l’objet SMS_Driver du pilote auquel vous souhaitez ajouter une catégorie.
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.
Ajoutez l’identificateur de catégorie à la propriété de tableau d’objets
CategoryInstance_UniqueIDs
WMI Class SMS_Driver Server.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 LocalizedCategoryInstanceName WMI 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