Partager via


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 ContentSourcePathclasse 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

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

  2. Obtenez l’objet SMS_BootImagePackage du package d’image de démarrage auquel vous souhaitez ajouter le pilote.

  3. Créez et remplissez un objet incorporé SMS_Driver_Details pour contenir les détails du pilote.

  4. Ajoutez l’objet SMS_Driver_Details à la ReferencedDrivers propriété array de l’objet SMS_BootImagePackage .

  5. 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