Freigeben über


Entfernen eines Windows-Treibers aus einem Startabbildpaket

In Configuration Manager entfernen Sie einen Windows-Treiber aus einem Startabbildpaket der Betriebssystembereitstellung, indem Sie ihn aus der ReferencedDrivers -Eigenschaft des WMI-Klassenobjekts des SMS_BootImagePackage-Servers entfernen.

Hinweis

Der Treiber wird erst entfernt, wenn das Startabbildpaket aktualisiert und auf den Verteilungspunkten aktualisiert wird.

So entfernen Sie einen Windows-Treiber aus einem Startimagepaket

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein. Weitere Informationen finden Sie unter Grundlagen des SMS-Anbieters.

  2. Rufen Sie das SMS_BootImagePackage-Objekt für das Startimagepaket ab, das den Treiber enthält, den Sie entfernen möchten.

  3. Entfernen Sie den Treiber aus der ReferencedDrivers -Eigenschaft. Der Treiber wird durch seinen Konfigurationselementbezeichner identifiziert, der durch die ID -Eigenschaft des SMS_Driver_Details Server WMI Class-Objekts dargestellt wird. Dieser Bezeichner entspricht der CI_ID -Eigenschaft von SMS_Driver.

  4. Committen Sie die SMS_BootImagePackage Objektänderungen.

  5. Aktualisieren Sie das Startabbildpaket, indem Sie aufrufen RefreshPkgSource.

Beispiel

Die folgende Beispielmethode entfernt den Windows-Treiber aus dem Startimagepaket. Das Paket wird durch seine PackageID -Eigenschaft identifiziert, und der Treiber wird durch seine CI_ID -Eigenschaft identifiziert.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.

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;
    }
}

Die Beispielmethode verfügt über die folgenden Parameter:

Parameter Typ Beschreibung
Connection -Gehandhabt: WqlConnectionManager
– VBScript: SWbemServices
Eine gültige Verbindung mit dem SMS-Anbieter.
driverID -Gehandhabt: Integer
– VBScript: Integer
Der in SMS_Driver.CI_IDverfügbare Windows-Treiberbezeichner.
PackageID -Gehandhabt: String
– VBScript: String
Der in SMS_BootImagePackage.PackageIDverfügbare Startabbildpaketbezeichner.

Kompilieren des Codes

Für dieses C#-Beispiel ist Folgendes erforderlich:

Namespaces

System

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Robuste Programmierung

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.

.NET Framework-Sicherheit

Weitere Informationen zum Schützen Configuration Manager Anwendungen finden Sie unter Configuration Manager rollenbasierte Verwaltung.

Siehe auch

Informationen zur Treiberverwaltung für die Betriebssystembereitstellung: Hinzufügen eines Windows-Treibers zu einem Configuration Manager-Startabbildpaket