共用方式為


如何將 Windows 驅動程式新增至 Configuration Manager 開機映射套件

在 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 驅動程式新增至開機映像套件

  1. 設定與SMS提供者的連線。 如需詳細資訊,請 參閱SMS提供者基本概念

  2. 取得您想要新增驅動程式之開機映像套件的 SMS_BootImagePackage 物件。

  3. 建立並填入內嵌 SMS_Driver_Details 物件,以包含驅動程式詳細數據。

  4. SMS_Driver_Details將物件新增至 ReferencedDrivers 物件的陣列SMS_BootImagePackage屬性。

  5. 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 角色型系統管理

另請參閱

關於作系統部署驅動程式管理如何從開機映像套件移除 Windows 驅動程式