Compartilhar via


Como remover um Driver do Windows de um pacote de imagem de inicialização

Em Configuration Manager, você remove um driver Windows de um pacote de imagem de inicialização de implantação do sistema operacional removendo-o ReferencedDrivers da propriedade do objeto classe WMI do servidor SMS_BootImagePackage.

Observação

O driver não é removido até que o pacote de imagem de inicialização seja atualizado e atualizado nos pontos de distribuição.

Para remover um driver do Windows de um pacote de imagem de inicialização

  1. Configure uma conexão com o Provedor de SMS. Para obter mais informações, confira Os fundamentos do Provedor de SMS.

  2. Obtenha o objeto SMS_BootImagePackage para o pacote de imagem de inicialização que contém o driver que você deseja remover.

  3. Remova o driver da ReferencedDrivers propriedade. O driver é identificado pelo identificador de item de configuração representado pela ID propriedade do objeto classe WMI do servidor SMS_Driver_Details . Esse identificador corresponde à CI_ID propriedade de SMS_Driver.

  4. Confirme as alterações de SMS_BootImagePackage objeto.

  5. Atualize o pacote de imagem de inicialização chamando RefreshPkgSource.

Exemplo

O método de exemplo a seguir remove o driver windows do pacote de imagem de inicialização. O pacote é identificado por sua PackageID propriedade e o driver é identificado por sua CI_ID propriedade.

Para obter informações sobre como chamar o código de exemplo, consulte Chamando Configuration Manager Snippets de Código.

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

O método de exemplo tem os seguintes parâmetros:

Parâmetro Tipo Descrição
Connection -Gerenciado: WqlConnectionManager
- VBScript: SWbemServices
Uma conexão válida com o provedor de SMS.
driverID -Gerenciado: Integer
-Vbscript: Integer
O identificador do driver do Windows disponível em SMS_Driver.CI_ID.
PackageID -Gerenciado: String
-Vbscript: String
O identificador de pacote de imagem de inicialização disponível em SMS_BootImagePackage.PackageID.

Compilando o código

Este exemplo de C# requer:

Namespaces

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programação robusta

Para obter mais informações sobre o tratamento de erros, consulte Sobre erros de Configuration Manager.

Segurança do .NET Framework

Para obter mais informações sobre como proteger aplicativos Configuration Manager, consulte Configuration Manager administração baseada em função.

Confira também

Sobre o Gerenciamento de Driver de Implantação do Sistema Operacional
Como adicionar um Driver do Windows a um pacote de imagem de inicialização Configuration Manager