Partilhar via


Como Atribuir um Pacote a um Ponto de Distribuição

O exemplo a seguir mostra como atribuir um ponto de distribuição a um pacote utilizando o SMS_DistributionPoint e as classes no Gestor de SMS_SystemResourceList Configuração. Só precisa de atribuir um ponto de distribuição a um pacote se o pacote contiver ficheiros de origem (PkgSourcePath). O pacote não é anunciado até que os ficheiros de origem do programa tenham sido propagados a uma partilha de ponto de distribuição. Pode utilizar a partilha de pontos de distribuição predefinidos, ou pode especificar uma partilha para usar. Também pode especificar mais do que um ponto de distribuição para distribuir os seus ficheiros de origem de pacotes, embora este exemplo não demonstre isso.

Atribuir um pacote a um ponto de distribuição

  1. Configurar uma ligação com o Fornecedor DE SMS.

  2. Criar um novo objeto de ponto de distribuição (este não é um ponto de distribuição real).

  3. Associe o pacote existente com o novo objeto ponto de distribuição.

  4. Consulta para um único ponto de distribuição com base no código do site fornecido e no nome do servidor.

  5. Utilize os resultados da consulta para povoar a ServerNALPath propriedade do objeto ponto de distribuição.

  6. Guarde o objeto e propriedades do ponto de distribuição.

Exemplo

O método de exemplo a seguir atribui uma embalagem a um ponto de distribuição.

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


Sub SWDAssignPackageToDistributionPoint(connection, existingPackageID, siteCode, serverName)  

    Const wbemFlagReturnImmediately = 16  
    Const wbemFlagForwardOnly = 32  
    Dim distributionPoint  
    Dim query  
    Dim listOfResources  
    Dim resource  

    ' Create distribution point object (this is not an actual distribution point).  
    Set distributionPoint = connection.Get("SMS_DistributionPoint").SpawnInstance_  

    ' Associate the existing package with the new distribution point object.  
    distributionPoint.PackageID = existingPackageID       

    ' This query selects a single distribution point based on the provided SiteCode and ServerName.  
    query = "SELECT * FROM SMS_SystemResourceList WHERE RoleName='SMS Distribution Point' AND SiteCode='" & siteCode & "' AND ServerName='" & serverName & "'"  

    Set listOfResources = connection.ExecQuery(query, , wbemFlagForwardOnly Or wbemFlagReturnImmediately)  

    ' The query returns a collection that needs to be enumerated (although we should only get one instance back).  
    For Each resource In ListOfResources        
        distributionPoint.ServerNALPath = Resource.NALPath  
        distributionPoint.SiteCode = Resource.SiteCode          
    Next  

    ' Save the distribution point instance for the package.  
    distributionPoint.Put_   

    ' Display notification text.  
    Wscript.Echo "Assigned package: " & distributionPoint.PackageID   

End Sub  
public void AssignPackageToDistributionPoint(WqlConnectionManager connection, string existingPackageID, string siteCode, string serverName)  
{  
    try  
    {  
        // Create the distribution point object (this is not an actual distribution point).  
        IResultObject distributionPoint = connection.CreateInstance("SMS_DistributionPoint");  

        // Associate the package with the new distribution point object.   
        distributionPoint["PackageID"].StringValue = existingPackageID;  

        // This query selects a single distribution point based on the provided siteCode and serverName.  
        string query = "SELECT * FROM SMS_SystemResourceList WHERE RoleName='SMS Distribution Point' AND SiteCode='" + siteCode + "' AND ServerName='" + serverName + "'";  

        //   
        IResultObject listOfResources = connection.QueryProcessor.ExecuteQuery(query);  
        foreach (IResultObject resource in listOfResources)  
        {  
            Console.WriteLine(resource["SiteCode"].StringValue);  
            distributionPoint["ServerNALPath"].StringValue = resource["NALPath"].StringValue;  
            distributionPoint["SiteCode"].StringValue = resource["SiteCode"].StringValue;  
        }  

        // Save the distribution point object and properties.  
        distributionPoint.Put();  

        // Output package ID of assigned package.  
        Console.WriteLine("Assigned package: " + distributionPoint["PackageID"].StringValue);  
    }  

    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

swbemServices
- Gerido: WqlConnectionManager
- VBScript: SWbemServices
Uma ligação válida ao Fornecedor de SMS.
existingPackageID - Gerido: String
- VBScript: String
A identificação do pacote existente.
siteCode - Gerido: String
- VBScript: String
O código do site.
serverName - Gerido: String
- VBScript: String
O nome do servidor.

A Compilar o Código

O exemplo C# requer:

Espaços de nomes

Sistema

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assemblagem

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

mscorlib

Programação Robusta

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

Consulte também

Visão geral da distribuição de software Sobre o ficheiro de controlo do site SMS_SCI_Component Classe WMI do servidor
Classe WMI do servidor de SMS_SystemResourceList