Freigeben über


Hinzufügen eines Windows-Treibers zu einem Configuration Manager-Startabbildpaket

In Configuration Manager fügen Sie einem Startimagepaket der Betriebssystembereitstellung einen Windows-Treiber hinzu, indem Sie einen Verweis auf den erforderlichen Treiber in der SMS_BootImagePackage Server WMI Class-ArrayeigenschaftReferencedDrivers hinzufügen.

Hinweis

Die ReferencedDrivers -Eigenschaft ist ein Array eines eingebetteten SMS_Driver_Details-Objekts , und Sie können dem Paket mehrere Treiber hinzufügen. Die Objekte im Array werden dem Startimagepaket jedes Mal hinzugefügt, wenn es auf dem Verteilungspunkt aktualisiert wird.

Der Speicherort des Treiberinhalts wird in der Regel von der Objekteigenschaft SMS_Driver Server-WMI-KlasseContentSourcePath abgerufen. Dies kann jedoch überschrieben werden, wenn der ursprüngliche Treiberspeicherort nicht verfügbar ist.

Es kann erforderlich sein, Netzwerk- oder Speichertreiber zu einem Startimagepaket hinzuzufügen, damit eine Tasksequenz in WinPE auf die Netzwerk- und Datenträgerressourcen zugreifen kann.

Treiber werden dem Image nur hinzugefügt, wenn das Startimage durch Aufrufen der RefreshPkgSource-Methode in class SMS_BootImagePackage-Methode aktualisiert wird.

Treiber werden dem Image mithilfe von Windows-Paket-Manager hinzugefügt.

So fügen Sie einem Startimagepaket einen Windows-Treiber hinzu

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein. Weitere Informationen finden Sie unter Grundlagen des SMS-Anbieters.

  2. Rufen Sie das SMS_BootImagePackage-Objekt für das Startimagepaket ab, dem Sie den Treiber hinzufügen möchten.

  3. Erstellen Sie ein eingebettetes SMS_Driver_Details Objekt, das die Treiberdetails enthält, und füllen Sie es auf.

  4. Fügen Sie das SMS_Driver_Details -Objekt der ReferencedDrivers Arrayeigenschaft des SMS_BootImagePackage -Objekts hinzu.

  5. Committen Sie die SMS_BootImagePackage Objektänderungen.

Beispiel

Die folgende Beispielmethode fügt einem Startimagepaket einen Windows-Treiber hinzu. Das Paket wird durch seine PackageID -Eigenschaft identifiziert, und der Treiber wird durch seine CI_ID -Eigenschaft identifiziert.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.

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;  
    }  
}  

Die Beispielmethode verfügt über die folgenden Parameter:

Parameter Typ Beschreibung
Connection -Verwalteten:WqlConnectionManager
– VBScript: SWbemServices
Eine gültige Verbindung mit dem SMS-Anbieter.
driverID -Verwalteten: String
-Vbscript: String
Der in SMS_Driver.CI_IDverfügbare Windows-Treiberbezeichner.
PackageID -Verwalteten: String
-Vbscript: String
Der in SMS_BootImagePackage.PackageIDverfügbare Startabbildpaketbezeichner.

Kompilieren des Codes

Für dieses C#-Beispiel ist Folgendes erforderlich:

Namespaces

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Robuste Programmierung

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.

.NET Framework-Sicherheit

Weitere Informationen zum Schützen Configuration Manager Anwendungen finden Sie unter Configuration Manager rollenbasierte Verwaltung.

Siehe auch

Informationen zur Treiberverwaltung für die Betriebssystembereitstellung
Entfernen eines Windows-Treibers aus einem Startabbildpaket