다음을 통해 공유


배포 지점에 패키지를 할당하는 방법

다음 예제에서는 Configuration Manager 및 SMS_SystemResourceList 클래스를 사용하여 SMS_DistributionPoint 패키지에 배포 지점을 할당하는 방법을 보여 줍니다. 패키지에 원본 파일(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
기존 패키지의 ID입니다.
siteCode -관리: String
-Vbscript: String
사이트 코드입니다.
serverName -관리: String
-Vbscript: String
서버의 이름입니다.

코드 컴파일

C# 예제에는 다음이 필요합니다.

네임 스페이스

시스템

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

어셈블리

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

Mscorlib

강력한 프로그래밍

오류 처리에 대한 자세한 내용은 Configuration Manager 오류 정보를 참조하세요.

참고 항목

소프트웨어 배포 개요서버 WMI 클래스에 SMS_SCI_Component사이트 제어 파일 정보
SMS_SystemResourceList 서버 WMI 클래스