Freigeben über


Zuweisen eines Pakets zu einem Verteilungspunkt

Das folgende Beispiel zeigt, wie Sie einem Paket mithilfe der SMS_DistributionPoint Klassen und SMS_SystemResourceList in Configuration Manager einen Verteilungspunkt zuweisen. Sie müssen einem Paket nur dann einen Verteilungspunkt zuweisen, wenn das Paket Quelldateien (PkgSourcePath) enthält. Das Paket wird erst angekündigt, wenn die Programmquelldateien an eine Verteilungspunktfreigabe weitergegeben wurden. Sie können die Standardverteilungspunktfreigabe verwenden oder eine zu verwendende Freigabe angeben. Sie können auch mehrere Verteilungspunkte angeben, die zum Verteilen der Paketquelldateien verwendet werden sollen, obwohl dies in diesem Beispiel nicht veranschaulicht wird.

So weisen Sie einem Verteilungspunkt ein Paket zu

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein.

  2. Erstellen Sie ein neues Verteilungspunktobjekt (dies ist kein tatsächlicher Verteilungspunkt).

  3. Ordnen Sie das vorhandene Paket dem neuen Verteilungspunktobjekt zu.

  4. Abfragen eines einzelnen Verteilungspunkts basierend auf dem bereitgestellten Standortcode und Servernamen.

  5. Verwenden Sie die Abfrageergebnisse, um die ServerNALPath -Eigenschaft des Verteilungspunktobjekts aufzufüllen.

  6. Speichern Sie das Verteilungspunktobjekt und die Eigenschaften.

Beispiel

Die folgende Beispielmethode weist einem Verteilungspunkt ein Paket zu.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.


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;  
    }  
}  

Die Beispielmethode verfügt über die folgenden Parameter:

Parameter Typ Beschreibung
connection

swbemServices
-Verwalteten: WqlConnectionManager
– VBScript: SWbemServices
Eine gültige Verbindung mit dem SMS-Anbieter.
existingPackageID -Verwalteten: String
-Vbscript: String
Die ID des vorhandenen Pakets.
siteCode -Verwalteten: String
-Vbscript: String
Der Standortcode.
serverName -Verwalteten: String
-Vbscript: String
Der Name des Servers.

Kompilieren des Codes

Für das C#-Beispiel ist Folgendes erforderlich:

Namespaces

System

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

Mscorlib

Robuste Programmierung

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.

Siehe auch

Übersicht über die SoftwareverteilungInformationen zur StandortsteuerungsdateiSMS_SCI_Component WMI-Klasse des Servers
WMI-Klasse des SMS_SystemResourceList-Servers