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
Richten Sie eine Verbindung mit dem SMS-Anbieter ein. Weitere Informationen finden Sie unter Grundlagen des SMS-Anbieters.
Rufen Sie das SMS_BootImagePackage-Objekt für das Startimagepaket ab, dem Sie den Treiber hinzufügen möchten.
Erstellen Sie ein eingebettetes
SMS_Driver_Details
Objekt, das die Treiberdetails enthält, und füllen Sie es auf.Fügen Sie das
SMS_Driver_Details
-Objekt derReferencedDrivers
Arrayeigenschaft desSMS_BootImagePackage
-Objekts hinzu.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_ID verfügbare Windows-Treiberbezeichner. |
PackageID |
-Verwalteten: String -Vbscript: String |
Der in SMS_BootImagePackage.PackageID verfü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