Jak przypisać pakiet do punktu dystrybucji

W poniższym przykładzie pokazano, jak przypisać punkt dystrybucji do pakietu przy użyciu SMS_DistributionPoint klas i SMS_SystemResourceList w Configuration Manager. Punkt dystrybucji należy przypisać do pakietu tylko wtedy, gdy pakiet zawiera pliki źródłowe (PkgSourcePath). Pakiet nie jest anonsowany, dopóki pliki źródłowe programu nie zostać propagowane do udziału punktu dystrybucji. Możesz użyć domyślnego udziału punktu dystrybucji lub określić udział do użycia. Można również określić więcej niż jeden punkt dystrybucji do użycia do dystrybucji plików źródłowych pakietu, chociaż ten przykład tego nie pokazuje.

Aby przypisać pakiet do punktu dystrybucji

  1. Skonfiguruj połączenie z dostawcą programu SMS.

  2. Utwórz nowy obiekt punktu dystrybucji (nie jest to rzeczywisty punkt dystrybucji).

  3. Skojarz istniejący pakiet z nowym obiektem punktu dystrybucji.

  4. Zapytanie dotyczące pojedynczego punktu dystrybucji na podstawie podanej nazwy kodu lokacji i serwera.

  5. Użyj wyników zapytania, aby wypełnić ServerNALPath właściwość obiektu punktu dystrybucji.

  6. Zapisz obiekt i właściwości punktu dystrybucji.

Przykład

Poniższa przykładowa metoda przypisuje pakiet do punktu dystrybucji.

Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu 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;  
    }  
}  

Przykładowa metoda ma następujące parametry:

Parametr Wpisać Opis
connection

swbemServices
-Zarządzane: WqlConnectionManager
- VBScript: SWbemServices
Prawidłowe połączenie z dostawcą programu SMS.
existingPackageID -Zarządzane: String
-Vbscript: String
Identyfikator istniejącego pakietu.
siteCode -Zarządzane: String
-Vbscript: String
Kod witryny.
serverName -Zarządzane: String
-Vbscript: String
Nazwa serwera.

Kompilowanie kodu

Przykład języka C# wymaga:

Obszary nazw

System

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Zestawu

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

Mscorlib

Niezawodne programowanie

Aby uzyskać więcej informacji na temat obsługi błędów, zobacz Informacje o błędach Configuration Manager.

Zobacz też

Omówienie dystrybucji oprogramowaniaO pliku kontroli lokacjiSMS_SCI_Component Server WMI Class (Klasa WMI serwera)
SMS_SystemResourceList Server WMI Class