2012-08-03 65 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年開始出現。

恐怕,您唯一的選擇是直接進入數據庫。

相關問題