In two of my previous posts, I introduced and explained how to debug BizTalk components in Visual Studio: BizTalk – How to debug Custom Pipeline Components running on Isolated Host and Debugging External assembly’s or pipeline components – Attach to Process – which BizTalk process to use?.
In the last one, I presented two ways of determining the process id of BizTalk Host Instance:
- Using the Tasklist command. This command displays a list of applications and services with their Process ID (PID) for all tasks running on either a local or a remote computer.
- Using C# code.
📝 One-Minute Brief
Troubleshooting and debugging BizTalk Server often requires identifying the specific Process ID (PID) of a running Host Instance to attach a debugger or monitor performance. While tools like tasklist or C# code work, this post provides a streamlined PowerShell script. The script queries WMI to find running in-process host instances on the local machine and matches them with performance counters to retrieve the exact PID for each instance.
Now I will present how we can accomplish this using PowerShell:
$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
}
Download
THIS POWERSHELL IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.
You can download Determining the process ID of BizTalk Host Instances with PowerShell from GitHub here:
Hope you find this helpful! If you liked the content or found it useful and would like to support me in writing more, consider buying (or helping to buy) a Star Wars Lego set for my son.
there is another way to figure out the PIDs for BizTalk host.
If you have a 32 bit hosts then run the following:
tasklist /SVC /fi “imagename eq btsntsvc.exe”
and if you have 64 bit hosts then run this:
tasklist /SVC /fi “imagename eq btsntsvc64.exe”
the /fi is a filter and the eq is equals.