在 Configuration Manager 中,您可以在 SMS_BootImagePackage Server WMI 類別ReferencedDrivers數位屬性中新增必要驅動程式的參考,以將 Windows 驅動程式新增至作系統部署開機映射套件。
注意事項
屬性 ReferencedDrivers 是內嵌 SMS_Driver_Details 對象的數位,而且您可以將多個驅動程式新增至套件。 每次在發佈點上更新時,數位列中的物件都會新增至開機映像套件。
驅動程式內容的位置通常會從 SMS_Driver Server WMI Class 物件 ContentSourcePath 屬性取得,但如果原始驅動程式位置無法使用,則可以覆寫此屬性。
可能需要將網路或記憶體驅動程式新增至開機映像套件,以便工作順序可以在 WinPE 中存取網路和磁碟資源。
只有在重新整理開機映射時,才會將驅動程式新增至映像,方法是在 Class SMS_BootImagePackage 方法中呼叫 RefreshPkgSource 方法。
驅動程式會使用 Windows 封裝管理員 新增至映像。
將 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_IDWindows 驅動程式識別碼。 |
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 錯誤。
.NET Framework 安全性
如需保護 Configuration Manager 應用程式的詳細資訊,請參閱 Configuration Manager 角色型系統管理。