Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O exemplo seguinte mostra como atribuir um ponto de distribuição a um pacote com as SMS_DistributionPoint classes e SMS_SystemResourceList no Configuration Manager. Só tem 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 para uma partilha de ponto de distribuição. Pode utilizar a partilha de ponto de distribuição predefinida ou pode especificar uma partilha a utilizar. Também pode especificar mais do que um ponto de distribuição a utilizar para distribuir os ficheiros de origem do pacote, embora este exemplo não demonstre isso.
Para atribuir um pacote a um ponto de distribuição
Configure uma ligação ao Fornecedor 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.
Consulte um único ponto de distribuição com base no código do site fornecido e no nome do servidor.
Utilize os resultados da consulta para preencher a
ServerNALPathpropriedade do objeto do ponto de distribuição.Guarde o objeto e as propriedades do ponto de distribuição.
Exemplo
O método de exemplo seguinte atribui um pacote a um ponto de distribuição.
Para obter informações sobre como chamar o código de exemplo, veja Chamar Configuration Manager Fragmentos 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 |
|---|---|---|
connectionswbemServices |
- Gerido: WqlConnectionManager- VBScript: SWbemServices |
Uma ligação válida ao Fornecedor de SMS. |
existingPackageID |
- Gerido: String- VBScript: String |
O ID do pacote existente. |
siteCode |
- Gerido: String- VBScript: String |
O código do site. |
serverName |
- Gerido: String- VBScript: String |
O nome do servidor. |
Compilando o código
O exemplo de 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 processamento de erros, veja About Configuration Manager Errors (Acerca dos Erros de Configuration Manager).
Confira também
Descrição geral da distribuição de software Acerca do ficheiro de controlo do siteSMS_SCI_Component Classe WMI de Servidor SMS_SystemResourceList Classe WMI de Servidor