Como determinar o Id do processo das Host Instances do BizTalk com PowerShell
Podemos fazer debug a partir do Visual Studio por exemplo a: DLL’s externas, que são invocadas por processos de BizTalk; ou componentes das pipelines em run-time. E à semelhança do que outras linguagens, no Visual Studio teremos de colocar breakpoints no nosso código. Para fazer debug deveremos associar o código. Net. que queremos analisar ao processo de BizTalk que o mesmo será executado.
No entanto, se tivermos mais de uma Host Instance configurada, quando abrimos a janela de debug para escolhe-mos o processo que queremos associar, aparecem todos os processos de BizTalk com o mesmo nome ("BTSNTSvc.exe"), como exemplo:
Desta forma, se nós não quisermos associar o código que queremos fazer debug a todos os processos de BizTalk, precisamos de determinar qual o processo a que queremos associar.
Podemos efetuar esta operação de várias maneiras:
· Você pode usar o comando tasklist para consultar os processos, executando o seguinte comando na janela de linha de comandos (cmd.exe)
- TASKLIST /FI “USERNAME ne NT AUTHORITYSYSTEM” /FI “IMAGENAME eq BTSNTSvc.exe” /SVC
· Utilizar código C#
· Ou usando PowerShell
Construindo o exemplo
O script pode ser baixado e executado no powershell: arraste o arquivo HostInstancesProcessID.ps1 para a janela do PowerShell e de seguida carregue em “Enter”.
$machineName = hostname
$query = "root\MicrosoftBizTalkServer", "Select * from MSBTS_HostInstance where HostType = 1 and ServiceState = 4 and RunningServer = '$machineName'"
$hostInstanceSearch = new-object system.management.managementObjectsearcher($query)
$hostInstanceList = $hostInstanceSearch.get()
foreach ($hostInstanceItem in $hostInstanceList)
{
$processName = $hostInstanceItem.HostName
$perfCounter = New-Object System.Diagnostics.PerformanceCounter("BizTalk:Messaging", "ID Process", $processName)
$processID = $perfCounter.NextValue()
Write-Host
Write-Host "HostName: " -foregroundcolor yellow -NoNewLine
Write-Host $hostInstanceItem.HostName -foregroundcolor white
Write-Host "Process Id: " -foregroundcolor yellow -NoNewLine
Write-Host $processID -foregroundcolor white
Write-Host
}
Seja o primeiro a comentar ;)
Postar um comentário