配布ポイントにパッケージを割り当てる方法
次の例では、Configuration Manager の クラスと SMS_SystemResourceList
クラスを使用SMS_DistributionPoint
して、配布ポイントをパッケージに割り当てる方法を示します。 パッケージにソース ファイル (PkgSourcePath) が含まれている場合にのみ、配布ポイントをパッケージに割り当てる必要があります。 プログラム ソース ファイルが配布ポイント共有に伝達されるまで、パッケージはアドバタイズされません。 既定の配布ポイント共有を使用することも、使用する共有を指定することもできます。 また、パッケージ ソース ファイルの配布に使用する配布ポイントを複数指定することもできますが、この例ではこれを示していません。
配布ポイントにパッケージを割り当てるには
SMS プロバイダーへの接続を設定します。
新しい配布ポイント オブジェクトを作成します (これは実際の配布ポイントではありません)。
既存のパッケージを新しい配布ポイント オブジェクトに関連付けます。
指定されたサイト コードとサーバー名に基づいて、1 つの配布ポイントを照会します。
クエリ結果を使用して、配布ポイント オブジェクトのプロパティを設定
ServerNALPath
します。配布ポイント のオブジェクトとプロパティを保存します。
例
次のメソッドの例では、パッケージを配布ポイントに割り当てます。
サンプル コードの呼び出しについては、「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 クラス