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# コマンド ライン アプリケーションを構築するためのプロジェクト、ソリューション、およびソース ファイル。

このサンプルをビルドして初期化する

  1. Visual Studio で、ソリューション ファイル UnenlistParties.sln を開きます。

  2. [ビルド] メニューで、 [ソリューションのビルド] を選択します。

このサンプルを実行する

  1. コマンド ウィンドウで、次のフォルダーに移動します。

    <サンプル パス>\管理\ExplorerOM\UnenlistParties\bin\Debug\

  2. ファイル 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.

参照

Admin-ExplorerOM (BizTalk Server Samples フォルダー)