Share via


Een pakket toewijzen aan een distributiepunt

In het volgende voorbeeld ziet u hoe u een distributiepunt toewijst aan een pakket met behulp van de SMS_DistributionPoint klassen en SMS_SystemResourceList in Configuration Manager. U hoeft alleen een distributiepunt toe te wijzen aan een pakket als het pakket bronbestanden (PkgSourcePath) bevat. Het pakket wordt pas geadverteerd als de bronbestanden van het programma zijn doorgegeven aan een distributiepuntshare. U kunt de standaarddistributiepuntshare gebruiken of u kunt een share opgeven die u wilt gebruiken. U kunt ook meer dan één distributiepunt opgeven dat moet worden gebruikt om uw pakketbronbestanden te distribueren, hoewel dit in dit voorbeeld niet wordt aangetoond.

Een pakket toewijzen aan een distributiepunt

  1. Een verbinding met de SMS-provider instellen.

  2. Maak een nieuw distributiepuntobject (dit is geen daadwerkelijk distributiepunt).

  3. Koppel het bestaande pakket aan het nieuwe distributiepuntobject.

  4. Voer een query uit naar één distributiepunt op basis van de opgegeven sitecode en servernaam.

  5. Gebruik de queryresultaten om de ServerNALPath eigenschap van het distributiepuntobject te vullen.

  6. Sla het distributiepuntobject en de eigenschappen op.

Voorbeeld

Met de volgende voorbeeldmethode wordt een pakket toegewezen aan een distributiepunt.

Zie Aanroepen Configuration Manager codefragmenten voor meer informatie over het aanroepen van de voorbeeldcode.


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

De voorbeeldmethode heeft de volgende parameters:

Parameter Type Beschrijving
connection

swbemServices
-Beheerd: WqlConnectionManager
- VBScript: SWbemServices
Een geldige verbinding met de SMS-provider.
existingPackageID -Beheerd: String
-Vbscript: String
De id van het bestaande pakket.
siteCode -Beheerd: String
-Vbscript: String
De sitecode.
serverName -Beheerd: String
-Vbscript: String
De naam van de server.

De code compileren

Voor het C#-voorbeeld is het volgende vereist:

Naamruimten

Systeem

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Vergadering

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

mscorlib

Robuust programmeren

Zie Over Configuration Manager fouten voor meer informatie over foutafhandeling.

Zie ook

Overzicht van softwaredistributieOver het sitebeheerbestandSMS_SCI_Component server WMI-klasse
WMI-klasse SMS_SystemResourceList-server