Partilhar via


Como Criar um Pacote de Controladores para um Controlador do Windows no Configuration Manager

Cria um pacote para um controlador de implementação do sistema operativo, no Gestor de Configuração, criando um SMS_DriverPackage objeto classe WMI do servidor. Para adicionar um controlador à embalagem, ligue para o Método AddDriverContent em classe SMS_DriverPackage.

Os pacotes do condutor são utilizados para armazenar o conteúdo associado aos condutores. Ao criar um pacote de motorista, a localização de origem deve ser inicialmente uma partilha vazia a que o Fornecedor de SMS leu e escreveu acesso. Quando um condutor é adicionado a um pacote de condutor, AddDriverContent utilizando, o Fornecedor SMS copiará o conteúdo do local de origem do condutor para um subdiretório na parte do pacote do condutor.

É necessário adicionar o conteúdo associado a um motorista a um pacote de motorista e atribuí-lo a um ponto de distribuição antes que o cliente possa usá-lo. Obtém o conteúdo do condutor do SMS_CIToContent objeto da Classe WMI do servidor onde a propriedade corresponde ao CI_ID identificador do condutor.

Nota

É possível que vários condutores partilhem o mesmo conteúdo. Isto normalmente acontece quando há vários ficheiros .inf no mesmo diretório.

AddDriverContent pode ser usado para adicionar vários controladores a uma embalagem simultaneamente. Para isso, adicione vários IDs de conteúdo. O bRefreshDPs parâmetro deve ser definido para se outra chamada será false feita. Isto garante que a embalagem só é atualizada no ponto de distribuição uma vez.

Quando AddDriverContent ligar, especifique um conjunto de locais de origem do pacote. Tipicamente, esta é a propriedade de objeto SMS_Driver Classe WMI do servidor, ContentSourcePath mas pode ser ultrapassada se o fornecedor não tiver acesso à localização original da fonte.

Para criar um pacote de motorista e adicionar conteúdo do condutor

  1. Configurar uma ligação com o Fornecedor DE SMS. Para mais informações, consulte os fundamentos do Fornecedor de SMS.

  2. Criar um objeto SMS_DriverPackage.

  3. Desajei a PkgSourceFlag propriedade do objeto a SMS_DriverPackage 2 (Armazenamento Direto).

  4. Cometa o SMS_DriverPackage objeto.

  5. Pegue o SMS_DriverPackage objeto.

  6. Coloque a lista de controladores que pretende adicionar à embalagem no método AddDriverContent ContentIDs em parâmetro.

  7. Coloque a lista de caminhos de origem de conteúdo do condutor no AddDriverContent método ContentSourcePath em parâmetro.

  8. Chame o AddDriverContent método.

  9. Ligue para o Método RefreshPkgSource em SMS_DriverPackage de classe para concluir a operação.

  10. Atribua o pacote do condutor a um ponto de distribuição. Para obter mais informações, consulte Como Atribuir um Pacote a um Ponto de Distribuição.

Exemplo

O método exemplo a seguir cria um pacote para um identificador de controlador fornecido, representado pela CI_ID propriedade do SMS_Driver objeto classe WMI do servidor. O método também toma um novo nome de pacote, descrição e caminho de fonte de pacote como parâmetros.

Nota

O packageSourcePath parâmetro deve ser fornecido como uma via de rede da Convenção Universal de Nomeação (UNC), por exemplo, \ \localhost\Drivers\ATIVideo \ .

Para obter informações sobre a chamada do código de amostra, consulte o Código de Identificação do Gestor de Chamadas.

Sub CreateDriverPackage(connection, driverId, newPackageName, newPackageDescription,  newPackageSourcePath)  

    Dim newPackage  
    Dim driver   
    Dim packageSources  
    Dim refreshDPs  
    Dim content   
    Dim path  
    Dim contentIds  
    Dim index  
    Dim item  

    ' Create the new driver package object.  
    Set newPackage = connection.Get("SMS_DriverPackage").SpawnInstance_  

    ' Populate the new package properties.  
    newPackage.Name = newPackageName  
    newPackage.Description = newPackageDescription  
    newPackage.PkgSourceFlag = 2 ' Storage direct  
    newPackage.PkgSourcePath = newPackageSourcePath  

    ' Save the package.  
    path=newPackage.Put_  

    ' Get the newly created package (Do this to call AddDriverContent).  
    Set newPackage=connection.Get(path)  

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

    ' Get the driver content.  
    Set content = connection.ExecQuery("Select * from SMS_CIToContent where CI_ID=" & driverId)  

    If content.Count = 0 Then  
        Wscript.Echo "No content found"  
        Exit Sub  
    End If  

    ' Create Array to hold driver content identifiers.  
    contentIds = Array()  
    ReDim contentIds(content.Count-1)  
    index = 0  

    For Each item In content           
        contentIds(index) = item.ContentID   
        index = index+1         
    Next  

    ' Create sources path Array.  
    packageSources = Array(driver.ContentSourcePath)  
    refreshDPs = False  

    ' Add the driver content.  
    Call newPackage.AddDriverContent(contentIds,packageSources,refreshDPs)  
    wscript.echo "Done"  

End Sub  
public void CreateDriverPackage(  
    WqlConnectionManager connection,   
    int driverId,   
    string newPackageName,   
    string newPackageDescription,   
    string newPackageSourcePath)  
{  
    try  
    {  
        if (Directory.Exists(newPackageSourcePath) == false)  
        {  
            throw new DirectoryNotFoundException("Package source path does not exist");  
        }  

        // Create new package object.  
        IResultObject newPackage = connection.CreateInstance("SMS_DriverPackage");  

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

        newPackage["Name"].StringValue = newPackageName;  
        newPackage["Description"].StringValue = newPackageDescription;  
        newPackage["PkgSourceFlag"].IntegerValue = (int)PackageSourceFlag.StorageDirect;  
        newPackage["PkgSourcePath"].StringValue = newPackageSourcePath;  

        // Save new package and new package properties.  
        newPackage.Put();  

        newPackage.Get();  

        // Get the content identifier.  
        List<int> contentIDs = new List<int>();  
        IResultObject content = connection.QueryProcessor.ExecuteQuery("Select * from SMS_CIToContent where CI_ID=" + driverId);  

        foreach (IResultObject ro in content)  
        {  
            contentIDs.Add(ro["ContentID"].IntegerValue);  
        }  

        // Get the package source.  
        List<string> packageSources = new List<string>();  
        packageSources.Add(driver["ContentSourcePath"].StringValue);  

        Dictionary<string, Object> inParams = new Dictionary<string, object>();  

        inParams.Add("bRefreshDPs", true);  
        inParams.Add("ContentIDs", contentIDs.ToArray());  
        inParams.Add("ContentSourcePath", packageSources.ToArray());  

        newPackage.ExecuteMethod("AddDriverContent", inParams);  
    }  
    catch (SmsException ex)  
    {  
        Console.WriteLine("Failed to create package. Error: " + ex.Message);  
        throw;  
    }  
}  

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

Parâmetro Tipo Description
connection - Gerido: WqlConnectionManager
- VBScript: SWbemServices
Uma ligação válida ao Fornecedor de SMS.
driverId - Gerido: Integer
- VBScript: Integer
O identificador do condutor ( SMS_Driver.CI_ID ).
newPackageName - Gerido: String
- VBScript: String
O nome do pacote.
newPackageDescription - Gerido: String
- VBScript: String
Uma descrição do novo pacote.
newPackageSourcePath - Gerido: String
- VBScript: String
Um caminho de rede válido da UNC para o condutor.

A Compilar o Código

Este exemplo C# requer:

Espaços de nomes

Sistema

System.Collections.Generic

System.Text

System.IO

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assemblagem

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programação Robusta

Para obter mais informações sobre o tratamento de erros, consulte Sobre erros do Gestor de Configuração.

Segurança do .NET Framework

Para obter mais informações sobre a segurança das aplicações do Gestor de Configuração, consulte a administração baseada em funções do Gestor de Configuração.

Consulte também

Classe WMI do servidor de SMS_Driver
Método AddDriverContent na Classe SMS_DriverPackage