Guide pratique pour ajouter un pilote Windows à un package d’image de démarrage Configuration Manager
Dans Configuration Manager, vous ajoutez un pilote Windows à un package d’image de démarrage de déploiement du système d’exploitation en ajoutant une référence au pilote requis dans la propriété de tableau classeReferencedDrivers
WMI SMS_BootImagePackage Server.
Remarque
La ReferencedDrivers
propriété est un tableau d’un objet SMS_Driver_Details incorporé et vous pouvez ajouter plusieurs pilotes au package. Les objets du tableau sont ajoutés au package d’image de démarrage chaque fois qu’il est mis à jour sur le point de distribution.
L’emplacement du contenu du pilote est généralement obtenu à partir de la propriété d’objet ContentSourcePath
classe WMI SMS_Driver Server, mais cela peut être remplacé si l’emplacement du pilote d’origine n’est pas disponible.
Il peut être nécessaire d’ajouter des pilotes réseau ou de stockage à un package d’image de démarrage afin qu’une séquence de tâches puisse accéder aux ressources réseau et disque dans WinPE.
Les pilotes sont ajoutés à l’image uniquement lorsque l’image de démarrage est actualisée en appelant la méthode RefreshPkgSource dans class SMS_BootImagePackage méthode.
Les pilotes sont ajoutés à l’image à l’aide de Gestionnaire de package Windows.
Pour ajouter un pilote Windows à un package d’image de démarrage
Configurez une connexion au fournisseur SMS. Pour plus d’informations, consultez Notions de base du fournisseur SMS.
Obtenez l’objet SMS_BootImagePackage du package d’image de démarrage auquel vous souhaitez ajouter le pilote.
Créez et remplissez un objet incorporé
SMS_Driver_Details
pour contenir les détails du pilote.Ajoutez l’objet
SMS_Driver_Details
à laReferencedDrivers
propriété array de l’objetSMS_BootImagePackage
.Commitez les modifications apportées à l’objet
SMS_BootImagePackage
.
Exemple
L’exemple de méthode suivant ajoute un pilote Windows à un package d’image de démarrage. Le package est identifié par sa PackageID
propriété, et le pilote est identifié par sa CI_ID
propriété .
Pour plus d’informations sur l’appel de l’exemple de code, consultez Appel d’extraits de code Configuration Manager.
Sub AddDriverToBootImagePackage(connection, driverId,packageId)
Dim bootImagePackage
Dim driver
Dim referencedDrivers
Dim driverDetails
' Get the boot image package and referenced drivers.
Set bootImagePackage = connection.Get("SMS_BootImagePackage.PackageID='" & packageId &"'" )
referencedDrivers = bootImagePackage.ReferencedDrivers
' Get the driver.
Set driver = connection.Get("SMS_Driver.CI_ID=" & driverId )
' Create and populate the driver details.
Set driverDetails = connection.Get("SMS_Driver_Details").SpawnInstance_
driverDetails.ID=driverId
driverDetails.SourcePath=driver.ContentSourcePath
' Add the driver details.
ReDim Preserve referencedDrivers (Ubound (referencedDrivers)+1)
Set referencedDrivers(Ubound(referencedDrivers))=driverDetails
bootImagePackage.ReferencedDrivers=referencedDrivers
bootImagePackage.Put_
bootImagePackage.RefreshPkgSource
End Sub
public void AddDriverToBootImagePackage(
WqlConnectionManager connection,
int driverId,
string packageId)
{
try
{
// Get the boot image package.
IResultObject bootImagePackage = connection.GetInstance(@"SMS_BootImagePackage.packageId='" + packageId + "'");
// Get the driver.
IResultObject driver = connection.GetInstance("SMS_Driver.CI_ID=" + driverId);
// Get the drivers that are referenced by the package.
List<IResultObject> referencedDrivers = bootImagePackage.GetArrayItems("ReferencedDrivers");
// Create and populate an embedded SMS_Driver_Details. This is added to the ReferencedDrivers array.
IResultObject driverDetails = connection.CreateEmbeddedObjectInstance("SMS_Driver_Details");
driverDetails["ID"].IntegerValue = driverId;
driverDetails["SourcePath"].StringValue = driver["ContentSourcePath"].StringValue;
// Add the driver details to the array.
referencedDrivers.Add(driverDetails);
// Add the array to the boot image package.
bootImagePackage.SetArrayItems("ReferencedDrivers", referencedDrivers);
// Commit the changes.
bootImagePackage.Put();
bootImagePackage.ExecuteMethod("RefreshPkgSource", null);
}
catch (SmsException e)
{
Console.WriteLine(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. |
driverID |
-Géré: String -Vbscript: String |
Identificateur du pilote Windows disponible dans SMS_Driver.CI_ID . |
PackageID |
-Géré: String -Vbscript: String |
Identificateur du package d’image de démarrage disponible dans SMS_BootImagePackage.PackageID . |
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 un pilote Windows d’un package d’image de démarrage