在BizTalk Server管理控制台中,您可以查询已挂起的服务实例,然后按“应用程序名称”对其进行筛选。我需要没有BTS管理控制台的功能。
到目前为止,我已经创建了Powershell脚本来获取被挂起的实例:
$array = Get-WmiObject MSBTS_ServiceInstance `
-Namespace 'root\MicrosoftBizTalkServer' `
-Filter '(ServiceClass = 4 or ServiceClass = 1) `
and (ServiceStatus = 4 or ServiceStatus = 16)'
foreach ($element in $array)
{
Write-Host $element.InstanceID "-" $element.HostName "-" `
$element.ServiceStatus "-" $element.ServiceClass
}
如果您运行此脚本,您将获得所有已暂停的实例,但如何找到它们属于哪个应用程序?
任何使用PowerShell,WMI或C#的解决方案对我都有好处。
答案 0 :(得分:2)
我使用过Microsoft.BizTalk.Operations程序集......
Add-Type -AssemblyName ('Microsoft.BizTalk.Operations, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL')
$dbServer = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\BizTalk Server\3.0\Administration' 'MgmtDBServer').MgmtDBServer
$dbName = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\BizTalk Server\3.0\Administration' 'MgmtDBName').MgmtDBName
$bo = New-Object Microsoft.BizTalk.Operations.BizTalkOperations $dbServer, $dbName
$serviceInstances = $bo.GetServiceInstances()
$tgt = "DeploymentFramework.Samples.HelloWorld"
foreach ($instance in $serviceInstances)
{
if ($instance.Application -ieq $tgt)
{
$completionStatus= $bo.TerminateInstance($instance.Id)
}
}
我还没有解决的一件事...... Why does terminating a suspended (not resumable) service instance return Failed, yet it is terminated
答案 1 :(得分:1)
什么版本的BizTalk?
这适用于BizTalk 2010:
$array = Get-WmiObject MSBTS_ServiceInstance `
-Namespace 'root\MicrosoftBizTalkServer' `
-Filter '(ServiceClass = 4 or ServiceClass = 1) `
and (ServiceStatus = 4 or ServiceStatus = 16)'
foreach ($element in $array)
{
Write-Host $element.ServiceName
}
答案 2 :(得分:1)
应用程序名称属性不通过MSBTS_ServiceInstance类公开。我相信原因是,应用程序概念仅在BizTalk 2006中引入,但WMI API从2004年开始就存在。
我担心,你唯一的选择是直接进入数据库。