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 -Verwalteten: WqlConnectionManager
– VBScript: SWbemServices
Eine gültige Verbindung mit dem SMS-Anbieter.
driverID -Verwalteten: Integer
-Vbscript: Integer
Der in SMS_Driver.CI_IDverfügbare Windows-Treiberbezeichner.
PackageID -Verwalteten: 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