Tilldela ett paket till en distributionsplats

I följande exempel visas hur du tilldelar en distributionsplats till ett paket med hjälp SMS_DistributionPoint av klasserna och SMS_SystemResourceList i Configuration Manager. Du behöver bara tilldela en distributionsplats till ett paket om paketet innehåller källfiler (PkgSourcePath). Paketet annonseras inte förrän programkällans filer har spridits till en distributionsplatsresurs. Du kan använda standarddistributionsplatsresursen eller ange en resurs som ska användas. Du kan också ange mer än en distributionsplats som ska användas för att distribuera paketkällans filer, även om det här exemplet inte visar det.

Tilldela ett paket till en distributionsplats

  1. Konfigurera en anslutning till SMS-providern.

  2. Skapa ett nytt distributionsplatsobjekt (det här är inte en faktisk distributionsplats).

  3. Associera det befintliga paketet med det nya distributionsplatsobjektet.

  4. Fråga efter en enda distributionsplats baserat på den angivna platskoden och servernamnet.

  5. Använd frågeresultatet för att fylla i ServerNALPath egenskapen för distributionsplatsobjektet.

  6. Spara distributionsplatsobjektet och egenskaperna.

Exempel

Följande exempelmetod tilldelar ett paket till en distributionsplats.

Information om hur du anropar exempelkoden finns i Anropa Configuration Manager kodfragment.


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

Exempelmetoden har följande parametrar:

Parameter Typ Beskrivning
connection

swbemServices
-Hanterade: WqlConnectionManager
– VBScript: SWbemServices
En giltig anslutning till SMS-providern.
existingPackageID -Hanterade: String
-Vbscript: String
ID för det befintliga paketet.
siteCode -Hanterade: String
-Vbscript: String
Platskoden.
serverName -Hanterade: String
-Vbscript: String
Namnet på servern.

Kompilera koden

C#-exemplet kräver:

Namnområden

System

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Församlingen

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

mscorlib

Robust programmering

Mer information om felhantering finns i Om Configuration Manager fel.

Se även

Översikt över programvarudistributionOm platskontrollfilenSMS_SCI_Component serverns WMI-klass
SMS_SystemResourceList serverns WMI-klass