2012-08-03 64 views
4

在BizTalk Server管理控制台中,您可以查询已暂停的服务实例,然后按应用程序名称对其进行过滤。我需要没有BTS管理控制台的这种功能。如果你运行该脚本,你会得到所有暂停的情况下,但如何找出它们属于哪个应用程序在BizTalk中获取特定应用程序的所有暂挂实例

$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脚本即可挂起实例?

任何使用PowerShell,WMI或C#的解决方案都适合我。

回答

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

+0

只是我2美分:在这个答案之前,我已经创建了自定义的MSBuIld任务,它使用WMI来查找应用程序和挂起的消息 - 唯一的问题是我无法批量终止它们,因此花了很多时间来终止它们一个接一个循环 – Ash 2016-05-12 12:03:51

1

什么版本的BizTalk?

此工程于2010年的BizTalk:

$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 
} 
+1

它给我的服务名称,而不是应用程序(名称) – Ash 2012-08-22 07:41:18

1

应用程序名称属性不通过MSBTS_ServiceInstance类暴露。我相信其原因是,应用程序概念仅在BizTalk 2006中引入,但WMI API从2004年开始出现。

恐怕,您唯一的选择是直接进入数据库。

相关问题