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 usando as SMS_DistributionPoint
classes e SMS_SystemResourceList
em Configuration Manager. Você só precisa atribuir um ponto de distribuição a um pacote se o pacote contiver arquivos de origem (PkgSourcePath). O pacote não é anunciado até que os arquivos de origem do programa tenham sido propagados para um compartilhamento de ponto de distribuição. Você pode usar o compartilhamento de ponto de distribuição padrão ou especificar um compartilhamento a ser usado. Você também pode especificar mais de um ponto de distribuição a ser usado para distribuir os arquivos de origem do pacote, embora este exemplo não demonstre isso.
Para atribuir um pacote a um ponto de distribuição
Configure uma conexão com o Provedor de SMS.
Crie um novo objeto de ponto de distribuição (este não é um ponto de distribuição real).
Associe o pacote existente ao novo objeto de ponto de distribuição.
Consulta para um único ponto de distribuição com base no código do site e no nome do servidor fornecidos.
Use os resultados da consulta para preencher a
ServerNALPath
propriedade do objeto do ponto de distribuição.Salve o objeto e as propriedades do ponto de distribuição.
Exemplo
O método de exemplo a seguir atribui um pacote a um ponto de distribuição.
Para obter informações sobre como chamar o código de exemplo, consulte Chamando Configuration Manager Snippets de Código.
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 de exemplo tem os seguintes parâmetros:
Parâmetro | Tipo | Descrição |
---|---|---|
connection swbemServices |
-Gerenciado: WqlConnectionManager - VBScript: SWbemServices |
Uma conexão válida com o provedor de SMS. |
existingPackageID |
-Gerenciado: String -Vbscript: String |
A ID do pacote existente. |
siteCode |
-Gerenciado: String -Vbscript: String |
O código do site. |
serverName |
-Gerenciado: String -Vbscript: String |
O nome do servidor. |
Compilando o código
O exemplo C# requer:
Namespaces
Sistema
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
Mscorlib
Programação robusta
Para obter mais informações sobre o tratamento de erros, consulte Sobre erros de Configuration Manager.
Confira também
Visão geral da distribuição desoftware Sobre o arquivo de controle do siteSMS_SCI_Component Classe WMI do Servidor
Classe WMI do servidor SMS_SystemResourceList