Compartilhar via


Como adicionar um Driver do Windows a um pacote de imagem de inicialização Configuration Manager

Em Configuration Manager, você adiciona um driver Windows a um pacote de imagem de inicialização de implantação do sistema operacional adicionando uma referência ao driver necessário na propriedade SMS_BootImagePackage ClasseReferencedDrivers WMI do Servidor.

Observação

A ReferencedDrivers propriedade é uma matriz de um objeto SMS_Driver_Details inserido e você pode adicionar mais de um driver ao pacote. Os objetos na matriz são adicionados ao pacote de imagem de inicialização sempre que ele é atualizado no ponto de distribuição.

O local do conteúdo do driver geralmente é obtido da propriedade de objeto ContentSourcePathclasse WMI do servidor SMS_Driver, mas isso pode ser substituído se o local original do driver não estiver disponível.

Talvez seja necessário adicionar drivers de rede ou armazenamento a um pacote de imagem de inicialização para que uma sequência de tarefas possa acessar os recursos de rede e disco enquanto estiver no WinPE.

Os drivers são adicionados à imagem somente quando a imagem de inicialização é atualizada chamando o método RefreshPkgSource em Class SMS_BootImagePackage método.

Os drivers são adicionados à imagem usando Gerenciador de Pacotes do Windows.

Para adicionar um driver windows a 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 ao qual você deseja adicionar o driver.

  3. Crie e preencha um objeto inserido SMS_Driver_Details para conter os detalhes do driver.

  4. Adicione o SMS_Driver_Details objeto à ReferencedDrivers propriedade array do SMS_BootImagePackage objeto.

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

Exemplo

O método de exemplo a seguir adiciona um driver windows a um 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 AddDriverToBootImagePackage(connection, driverId,packageId)  

    Dim bootImagePackage  
    Dim driver   
    Dim referencedDrivers  
    Dim driverDetails  

    ' Get the boot image package and referenced drivers.  
    Set bootImagePackage = connection.Get("SMS_BootImagePackage.PackageID='" & packageId &"'" )  
    referencedDrivers = bootImagePackage.ReferencedDrivers  

    ' Get the driver.  
    Set driver = connection.Get("SMS_Driver.CI_ID=" & driverId )  

    ' Create and populate the driver details.  
    Set driverDetails = connection.Get("SMS_Driver_Details").SpawnInstance_  
    driverDetails.ID=driverId  
    driverDetails.SourcePath=driver.ContentSourcePath  

    ' Add the driver details.  
    ReDim Preserve referencedDrivers (Ubound (referencedDrivers)+1)  
    Set referencedDrivers(Ubound(referencedDrivers))=driverDetails  
    bootImagePackage.ReferencedDrivers=referencedDrivers  

    bootImagePackage.Put_   
    bootImagePackage.RefreshPkgSource   

End Sub  
public void AddDriverToBootImagePackage(  
    WqlConnectionManager connection,   
    int driverId,   
    string packageId)  
{  
    try  
    {  
        // Get the boot image package.  
        IResultObject bootImagePackage = connection.GetInstance(@"SMS_BootImagePackage.packageId='" + packageId + "'");  

        // Get the driver.  
        IResultObject driver = connection.GetInstance("SMS_Driver.CI_ID=" + driverId);  

        // Get the drivers that are referenced by the package.  
        List<IResultObject> referencedDrivers = bootImagePackage.GetArrayItems("ReferencedDrivers");  

        // Create and populate an embedded SMS_Driver_Details. This is added to the ReferencedDrivers array.  
        IResultObject driverDetails = connection.CreateEmbeddedObjectInstance("SMS_Driver_Details");  

        driverDetails["ID"].IntegerValue = driverId;  
        driverDetails["SourcePath"].StringValue = driver["ContentSourcePath"].StringValue;  

        // Add the driver details to the array.  
        referencedDrivers.Add(driverDetails);  

        // Add the array to the boot image package.  
        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: String
-Vbscript: String
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 remover um Driver do Windows de um pacote de imagem de inicialização