Поделиться через


Назначение пакета точке распространения

В следующем примере показано, как назначить точку распространения пакету с помощью SMS_DistributionPoint классов и SMS_SystemResourceList в Configuration Manager. Необходимо назначить точку распространения пакету, только если пакет содержит исходные файлы (PkgSourcePath). Пакет не объявляется до тех пор, пока исходные файлы программы не будут распространены в общую папку точки распространения. Можно использовать общую папку точки распространения по умолчанию или указать общую папку для использования. Вы также можете указать несколько точек распространения для распространения исходных файлов пакета, хотя в этом примере это не показано.

Назначение пакета точке распространения

  1. Настройте подключение к поставщику SMS.

  2. Создайте новый объект точки распространения (это не фактическая точка распространения).

  3. Свяжите существующий пакет с новым объектом точки распространения.

  4. Запрос одной точки распространения на основе предоставленного кода сайта и имени сервера.

  5. Используйте результаты запроса для заполнения ServerNALPath свойства объекта точки распространения.

  6. Сохраните объект и свойства точки распространения.

Пример

В следующем примере метод назначает пакет точке распространения.

Сведения о вызове примера кода см. в разделе Вызов фрагментов кода 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;  
    }  
}  

Метод примера имеет следующие параметры:

Параметр Тип Описание
connection

swbemServices
-Управляемых: WqlConnectionManager
— VBScript: SWbemServices
Допустимое подключение к поставщику SMS.
existingPackageID -Управляемых: String
-Vbscript: String
Идентификатор существующего пакета.
siteCode -Управляемых: String
-Vbscript: String
Код сайта.
serverName -Управляемых: String
-Vbscript: String
Имя сервера.

Компиляция программы

Для примера C# требуется следующее:

Пространства имен

Системные

Майкрософт. ConfigurationManagement.ManagementProvider

Майкрософт. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

Mscorlib

Надежное программирование

Дополнительные сведения об обработке ошибок см. в разделе Сведения об ошибках Configuration Manager.

См. также

Обзор распространения программного обеспечения. Сведения о файле управления сайтомSMS_SCI_Component класс WMI сервера
Класс WMI сервера SMS_SystemResourceList