Come assegnare un pacchetto a un punto di distribuzione
Nell'esempio seguente viene illustrato come assegnare un punto di distribuzione a un pacchetto usando le SMS_DistributionPoint
classi e SMS_SystemResourceList
in Configuration Manager. È necessario assegnare un punto di distribuzione a un pacchetto solo se il pacchetto contiene file di origine (PkgSourcePath). Il pacchetto non viene annunciato fino a quando i file di origine del programma non sono stati propagati a una condivisione del punto di distribuzione. È possibile usare la condivisione del punto di distribuzione predefinita oppure specificare una condivisione da usare. È anche possibile specificare più punti di distribuzione da usare per distribuire i file di origine del pacchetto, anche se questo esempio non lo dimostra.
Per assegnare un pacchetto a un punto di distribuzione
Configurare una connessione al provider SMS.
Creare un nuovo oggetto punto di distribuzione (non si tratta di un punto di distribuzione effettivo).
Associare il pacchetto esistente al nuovo oggetto punto di distribuzione.
Eseguire una query per un singolo punto di distribuzione in base al codice del sito e al nome del server specificati.
Utilizzare i risultati della query per popolare la
ServerNALPath
proprietà dell'oggetto punto di distribuzione.Salvare l'oggetto e le proprietà del punto di distribuzione.
Esempio
Il metodo di esempio seguente assegna un pacchetto a un punto di distribuzione.
Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice Configuration Manager.
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;
}
}
Il metodo di esempio include i parametri seguenti:
Parametro | Tipo | Descrizione |
---|---|---|
connection swbemServices |
-Gestito: WqlConnectionManager - VBScript: SWbemServices |
Connessione valida al provider SMS. |
existingPackageID |
-Gestito: String -Vbscript: String |
ID del pacchetto esistente. |
siteCode |
-Gestito: String -Vbscript: String |
Codice del sito. |
serverName |
-Gestito: String -Vbscript: String |
Nome del server. |
Compilazione del codice
L'esempio C# richiede:
Namespaces
Sistema
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
Mscorlib
Programmazione efficiente
Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.
Vedere anche
Panoramica della distribuzione softwareInformazioni sul file di controllo del sitoSMS_SCI_Component classe WMI del server
Classe WMI del server SMS_SystemResourceList