在 Configuration Manager 中,您可以將 Windows 驅動程式新增至作業系統部署開機映射套件,方法是在 SMS_BootImagePackage Server WMI 類別ReferencedDrivers
數位屬性中新增必要驅動程式的參考。
注意
屬性 ReferencedDrivers
是內嵌 SMS_Driver_Details 對象的數位,而且您可以將多個驅動程式新增至套件。 每次在發佈點上更新時,數位列中的物件都會新增至開機映像套件。
驅動程式內容的位置通常會從 SMS_Driver Server WMI Class 物件 ContentSourcePath
屬性取得,但如果原始驅動程式位置無法使用,則可以覆寫此屬性。
可能需要將網路或記憶體驅動程式新增至開機映像套件,以便工作順序可以在 WinPE 中存取網路和磁碟資源。
只有在重新整理開機映射時,才會將驅動程式新增至映像,方法是在 Class SMS_BootImagePackage 方法中呼叫 RefreshPkgSource 方法。
驅動程式會使用 Windows 套件管理員新增至映像。
設定與SMS提供者的連線。 如需詳細資訊,請 參閱SMS提供者基本概念。
取得您想要新增驅動程式之開機映像套件的 SMS_BootImagePackage 物件。
建立並填入內嵌
SMS_Driver_Details
物件,以包含驅動程式詳細數據。SMS_Driver_Details
將物件新增至ReferencedDrivers
物件的陣列SMS_BootImagePackage
屬性。SMS_BootImagePackage
認可物件變更。
下列範例方法會將 Windows 驅動程式新增至開機映射套件。 套件是由其 PackageID
屬性所識別,而驅動程式則是透過其 CI_ID
屬性來識別。
如需呼叫範例程式代碼的相關信息,請 參閱呼叫 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;
}
}
範例方法具有下列參數:
參數 | Type | 描述 |
---|---|---|
Connection |
-管理:WqlConnectionManager - VBScript: SWbemServices |
SMS 提供者的有效連線。 |
driverID |
-管理: String - VBScript: String |
中可用的 SMS_Driver.CI_ID Windows 驅動程式識別碼。 |
PackageID |
-管理: String - VBScript: String |
中可用 SMS_BootImagePackage.PackageID 的開機映像套件標識碼。 |
此 C# 範例需要:
系統
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
如需錯誤處理的詳細資訊,請 參閱關於 Configuration Manager 錯誤。
如需保護 Configuration Manager 應用程式的詳細資訊,請參閱 Configuration Manager 角色型系統管理。