Compartilhar via


Como Remover um Controlador do Windows de um Pacote de Imagem de Arranque

No Configuration Manager, remove um controlador do Windows de um pacote de imagem de arranque de implementação do sistema operativo ao removê-lo da ReferencedDrivers propriedade do objeto classe WMI de Servidor SMS_BootImagePackage.

Observação

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

Para remover um controlador do Windows de um pacote de imagem de arranque

  1. Configure uma ligação ao Fornecedor de SMS. Para obter mais informações, veja Noções básicas do Fornecedor de SMS.

  2. Obtenha o objeto SMS_BootImagePackage do pacote de imagem de arranque que contém o controlador que pretende remover.

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

  4. Consolide as alterações do SMS_BootImagePackage objeto.

  5. Atualize o pacote de imagem de arranque ao chamar RefreshPkgSource.

Exemplo

O método de exemplo seguinte remove o controlador do Windows do pacote de imagem de arranque. O pacote é identificado pela respetiva PackageID propriedade e o controlador é identificado pela respetiva CI_ID propriedade.

Para obter informações sobre como chamar o código de exemplo, veja Chamar Configuration Manager Fragmentos 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 - Gerido: WqlConnectionManager
- VBScript: SWbemServices
Uma ligação válida ao Fornecedor de SMS.
driverID - Gerido: Integer
- VBScript: Integer
O identificador do controlador do Windows disponível no SMS_Driver.CI_ID.
PackageID - Gerido: String
- VBScript: String
O identificador do pacote de imagem de arranque 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 processamento de erros, veja About Configuration Manager Errors (Acerca dos Erros de Configuration Manager).

Segurança do .NET Framework

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

Confira também

Acerca da Gestão de Controladores de Implementação do Sistema OperativoComo Adicionar um Controlador do Windows a um Pacote de Imagem de Arranque do Configuration Manager