次の方法で共有


配布ポイントにパッケージを割り当てる方法

次の例では、Configuration Manager の クラスと SMS_SystemResourceList クラスを使用SMS_DistributionPointして、配布ポイントをパッケージに割り当てる方法を示します。 パッケージにソース ファイル (PkgSourcePath) が含まれている場合にのみ、配布ポイントをパッケージに割り当てる必要があります。 プログラム ソース ファイルが配布ポイント共有に伝達されるまで、パッケージはアドバタイズされません。 既定の配布ポイント共有を使用することも、使用する共有を指定することもできます。 また、パッケージ ソース ファイルの配布に使用する配布ポイントを複数指定することもできますが、この例ではこれを示していません。

配布ポイントにパッケージを割り当てるには

  1. SMS プロバイダーへの接続を設定します。

  2. 新しい配布ポイント オブジェクトを作成します (これは実際の配布ポイントではありません)。

  3. 既存のパッケージを新しい配布ポイント オブジェクトに関連付けます。

  4. 指定されたサイト コードとサーバー名に基づいて、1 つの配布ポイントを照会します。

  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# の例では、次のものが必要です。

名前空間

System

Microsoft。ConfigurationManagement.ManagementProvider

Microsoft。ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

Mscorlib

堅牢なプログラミング

エラー処理の詳細については、「Configuration Manager エラーについて」を参照してください。

関連項目

ソフトウェア配布の概要サーバー WMI クラスSMS_SCI_Componentサイト コントロール ファイルについて
SMS_SystemResourceList サーバー WMI クラス