在 Configuration Manager 中,您會從 SMS_BootImagePackage Server WMI Class 物件的 屬性中移除 Windows 驅動程式,以從ReferencedDrivers作系統部署開機映射套件中移除它。
注意事項
在發佈點上重新整理和更新開機映射套件之前,不會移除驅動程式。
從開機映像套件移除 Windows 驅動程式
設定與SMS提供者的連線。 如需詳細資訊,請 參閱SMS提供者基本概念。
取得包含您要移除之驅動程式之開機映像套件的 SMS_BootImagePackage 物件。
從屬性中移除驅動程式
ReferencedDrivers。 驅動程式是由其組態專案標識碼所識別,該標識碼是由 SMS_Driver_Details Server WMI Class 物件的 屬性所ID表示。 此識別碼符合CI_ID的SMS_Driver屬性。SMS_BootImagePackage認可物件變更。呼叫
RefreshPkgSource來重新整理開機映像套件。
範例
下列範例方法會從開機映射套件中移除 Windows 驅動程式。 套件是由其 PackageID 屬性所識別,而驅動程式則是透過其 CI_ID 屬性來識別。
如需呼叫範例程式代碼的相關信息,請參閱呼叫 Configuration Manager 代碼段。
Sub RemoveDriverFromBootImagePackage(connection, driverId, packageId)
Dim bootImagePackage
Dim driver
Dim driverDetails
Dim newReferencedDrivers()
Dim found
Dim index
' Get the boot image package.
Set bootImagePackage = connection.Get("SMS_BootImagePackage.PackageID='" & packageId &"'" )
found = False
index=0
' Copy the contents and leave out the driver.
For Each driver In bootImagePackage.ReferencedDrivers
If driver.ID = driverID Then
found=True
Else
Set newReferencedDrivers(index)=driver
index = index + 1
End If
Next
' Update the referenced drivers.
If found=True Then
ReDim preserve newReferencedDrivers(UBound(bootImagePackage.ReferencedDrivers)-1)
bootImagePackage.ReferencedDrivers=newReferencedDrivers
bootImagePackage.Put_
bootImagePackage.RefreshPkgSource
End If
End Sub
public void RemoveDriverFromBootImagePackage(
WqlConnectionManager connection,
int driverId,
string packageId)
{
try
{
// Get the boot image package.
IResultObject bootImagePackage = connection.GetInstance(@"SMS_BootImagePackage.packageId='" + packageId + "'");
// Get the (SMS_Driver_Details) drivers referenced by the package.
List<IResultObject> referencedDrivers = bootImagePackage.GetArrayItems("ReferencedDrivers");
foreach (IResultObject ro in referencedDrivers)
{
if (ro["ID"].IntegerValue == driverId) // Remove the driver that matches driverId.
{
referencedDrivers.Remove(ro);
break;
}
}
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 |
-管理: Integer- VBScript: Integer |
中可用的 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 驅動程式新增至 Configuration Manager 開機映像套件