UnenlistParties (BizTalk Server サンプル)
UnenlistParties サンプルは、展開された BizTalk Server アセンブリに関連付けられているすべてのパーティの参加を解除する方法を示しています。
警告
展開スクリプトは、展開後に不要になった場合は、削除する必要があります。 保持する必要のある管理スクリプトおよび他のスクリプトは、ACL によってセキュリティで保護し、厳重に監視する必要があります。
前提条件
このサンプルの管理オブジェクトを使用するには、BizTalk Server管理特権が必要です。
Windows PowerShell スクリプトを実行するには、Windows PowerShell 実行ポリシーが必要です。 詳細については、「about_Execution_Policies」を参照してください。
このサンプルのデザイン方法とその理由
このサンプルは、BizTalk エクスプローラー オブジェクト モデルのオブジェクトを使用して Visual C# で記述されています。このサンプルは、以下の操作を実行します。
特定のアセンブリに対するクエリを実行します。
アセンブリに関連付けられているすべてのロールを取得します。
各ロールに関連付けられているすべてのパーティの参加を解除します。
意味のある情報がユーザーに返されるようにエラーを処理します。
このサンプルの場所
このサンプルは、SDK がある次の場所にあります。
<サンプル パス>\管理\ExplorerOM\UnenlistParties\
次の表は、このサンプルのファイルとその目的を示しています。
ファイル | 説明 |
---|---|
App.ico、AssemblyInfo.cs、UnenlistParties.csproj、UnenlistParties.sln、UnenlistParties.cs | 特定のアセンブリに対してすべてのパーティの参加を解除する Visual C# コマンド ライン アプリケーションを構築するためのプロジェクト、ソリューション、およびソース ファイル。 |
このサンプルをビルドして初期化する
Visual Studio で、ソリューション ファイル UnenlistParties.sln を開きます。
[ビルド] メニューで、 [ソリューションのビルド] を選択します。
このサンプルを実行する
コマンド ウィンドウで、次のフォルダーに移動します。
<サンプル パス>\管理\ExplorerOM\UnenlistParties\bin\Debug\
ファイル UnenlistParties.exe を実行し、次の 2 つのコマンド ライン引数のいずれかを渡します。
<AssemblyName>。 すべての関連パーティの参加を解除するアセンブリの名前。 アセンブリ名に空白が含まれている場合は、名前を引用符で囲みます。
/?. ヘルプを表示します。
次に例を示します。
UnenlistParties "My BizTalk Assembly.dll"
\- または -
UnenlistParties /?
Windows PowerShell スクリプトの例
次の Windows Powershell スクリプト フラグメントを使用して、 ExplorerOM クラスの同じ機能を示すことができます。
#===================#
#=== Main Script ===#
#===================#
#=== Make sure the ExplorerOM assembly is loaded ===#
[void] [System.reflection.Assembly]::LoadWithPartialName("Microsoft.BizTalk.ExplorerOM")
#=== Connect to the BizTalk Management database ===#
$Catalog = New-Object Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer
$Catalog.ConnectionString = "SERVER=.;DATABASE=BizTalkMgmtDb;Integrated Security=SSPI"
#=====================================================#
#=== If no assembly name is specified, just list ===#
#=== the assemblies, roles and partyies enlisted. ===#
#=====================================================#
if ($args[0] -eq $null)
{
Write-Host `r`n===========================================================
Write-Host No assembly name provided for party unenlist operation.
Write-Host Listing Parties for each assembly on local BizTalk Server:
Write-Host ===========================================================`r`n
foreach ($assembly in $Catalog.Assemblies)
{
write-host $Assembly.Name`r`n
foreach ($role in $Assembly.Roles)
{
write-host `t($role.name)
foreach($party in $role.EnlistedParties)
{
Write-Host `t`t($party.Party.Name)
}
write-host
}
}
write-host
}
#=====================================================#
#=== If assembly name is specified, remove parties ===#
#=== enlisted in all roles for the assembly. ===#
#=====================================================#
else
{
$Assembly = $Catalog.Assemblies[$args[0]]
if ($assembly -eq $null)
{
write-host Assembly named $args[0] not found.`r`n
}
else
{
write-host `r`nUnenlisting parties from all roles in ($Assembly.Name)`r`n
foreach ($role in $Assembly.Roles)
{
$count = $role.EnlistedParties.count
for($c=0; $c -lt $count; $c++)
{
#==========================================================#
#=== Array index stays at zero because the collection ===#
#=== changes after each item is removed. ===#
#==========================================================#
$party = $role.EnlistedParties[0]
Write-Host Unenlisting ($party.Party.Name) from ($role.Name)...
$role.RemoveEnlistedParty($party)
Write-Host done.`r`n
}
}
write-Host Comitting changes...
$catalog.SaveChanges()
Write-Host done.`r`n
}
}
次のスクリプト出力は、PartyResolution サンプルの一部である Supplier アセンブリからパーティを参加解除したときに生成されました。 PartyResolution サンプルは、Samples Path>\管理\Orchestrations\PartyResolution ディレクトリにあります<。
PS C:\> .\UnenlistParties.ps1 Supplier
Unenlisting parties from all roles in Supplier
Unenlisting ShipmentAgency1 from ShipmentRole ...
done.
Unenlisting ShipmentAgency2 from ShipmentRole ...
done.
Unenlisting BuyerAgency from Buyer ...
done.
Comitting changes...
done.