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 ContentSourcePath
classe 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
Configure uma conexão com o Provedor de SMS. Para obter mais informações, confira Os fundamentos do Provedor de SMS.
Obtenha o objeto SMS_BootImagePackage para o pacote de imagem de inicialização ao qual você deseja adicionar o driver.
Crie e preencha um objeto inserido
SMS_Driver_Details
para conter os detalhes do driver.Adicione o
SMS_Driver_Details
objeto àReferencedDrivers
propriedade array doSMS_BootImagePackage
objeto.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