UnenlistParties(BizTalk Server 示例)
UnenlistParties 示例演示如何取消登记与部署的 BizTalk Server 程序集关联的所有参与方。
警告
部署后,如果不再需要部署脚本,则应将其删除。 应通过 ACL 确保必须保留的管理脚本和其他脚本的安全并加以密切监视。
必备条件
必须具有BizTalk Server管理权限才能使用此示例中的管理对象。
Windows PowerShell 脚本要求 Windows PowerShell 执行策略允许脚本执行。 有关详细信息,请参阅 about_Execution_Policies。
此示例的设计方式和原因
本示例以 Visual C# 编写,使用 BizTalk 浏览器对象模型中的对象执行下列操作:
查询特定程序集。
检索所有与该程序集关联的角色。
取消登记所有与每个此类角色关联的参与方。
处理所有错误,以便向用户返回有意义的信息。
本示例所在的位置
本示例位于以下 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 文件,并传递下面两个命令行参数之一:
<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 示例的供应商程序集中注销参与方生成的。 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.