Jak dodać sterownik systemu Windows do pakietu obrazu rozruchowego programu Configuration Manager
W programie Configuration Manager można dodać sterownik systemu Windows do pakietu obrazu rozruchowego wdrożenia systemu operacyjnego, dodając odwołanie do wymaganego sterownika we właściwości tablicy klasy ReferencedDrivers
WMI serwera SMS_BootImagePackage Server.
Uwaga
Właściwość ReferencedDrivers
jest tablicą osadzonego obiektu SMS_Driver_Details i można dodać do pakietu więcej niż jeden sterownik. Obiekty w tablicy są dodawane do pakietu obrazu rozruchowego za każdym razem, gdy są aktualizowane w punkcie dystrybucji.
Lokalizacja zawartości sterownika jest zwykle uzyskiwana z właściwości obiektu ContentSourcePath
klasy WMI serwera SMS_Driver, ale można ją zastąpić, jeśli oryginalna lokalizacja sterownika nie jest dostępna.
Może być konieczne dodanie sterowników sieci lub magazynu do pakietu obrazu rozruchowego, aby sekwencja zadań mogła uzyskiwać dostęp do zasobów sieci i dysku w programie WinPE.
Sterowniki są dodawane do obrazu tylko wtedy, gdy obraz rozruchowy jest odświeżany przez wywołanie metody RefreshPkgSource w klasie SMS_BootImagePackage .
Sterowniki są dodawane do obrazu przy użyciu Menedżera pakietów systemu Windows.
Aby dodać sterownik systemu Windows do pakietu obrazu rozruchowego
Skonfiguruj połączenie z dostawcą programu SMS. Aby uzyskać więcej informacji, zobacz Podstawy dostawcy programu SMS.
Pobierz obiekt SMS_BootImagePackage dla pakietu obrazów rozruchowych, do których chcesz dodać sterownik.
Utwórz i wypełnij obiekt osadzony
SMS_Driver_Details
, aby zawierał szczegóły sterownika.SMS_Driver_Details
Dodaj obiekt doReferencedDrivers
właściwości tablicy obiektuSMS_BootImagePackage
.Zatwierdź zmiany obiektu
SMS_BootImagePackage
.
Przykład
Poniższa przykładowa metoda dodaje sterownik systemu Windows do pakietu obrazu rozruchowego. Pakiet jest identyfikowany przez jego PackageID
właściwość, a sterownik jest identyfikowany przez jego CI_ID
właściwość.
Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu programu 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;
}
}
Przykładowa metoda ma następujące parametry:
Parametr | Wpisać | Opis |
---|---|---|
Connection |
-Zarządzane:WqlConnectionManager - VBScript: SWbemServices |
Prawidłowe połączenie z dostawcą programu SMS. |
driverID |
-Zarządzane: String - VBScript: String |
Identyfikator sterownika systemu Windows dostępny w systemie SMS_Driver.CI_ID . |
PackageID |
-Zarządzane: String - VBScript: String |
Identyfikator pakietu obrazu rozruchowego dostępny w programie SMS_BootImagePackage.PackageID . |
Kompilowanie kodu
Ten przykład języka C# wymaga:
Przestrzenie nazw
System
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Montaż
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Niezawodne programowanie
Aby uzyskać więcej informacji na temat obsługi błędów, zobacz About Configuration Manager Errors (Informacje o błędach programu Configuration Manager).
Zabezpieczenia programu .NET Framework
Aby uzyskać więcej informacji na temat zabezpieczania aplikacji programu Configuration Manager, zobacz Administracja oparta na rolach programu Configuration Manager.
Zobacz też
Informacje o zarządzaniu sterownikami wdrażania systemu operacyjnego
Jak usunąć sterownik systemu Windows z pakietu obrazu rozruchowego