How to determine the process ID of BizTalk Host Instances with PowerShell

  • Sandro Pereira
  • May 3, 2012
  • 2 min read

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. 

Thanks for Buying me a coffe
Author: Sandro Pereira

Sandro Pereira lives in Portugal and works as a consultant at DevScope. In the past years, he has been working on implementing Integration scenarios both on-premises and cloud for various clients, each with different scenarios from a technical point of view, size, and criticality, using Microsoft Azure, Microsoft BizTalk Server and different technologies like AS2, EDI, RosettaNet, SAP, TIBCO etc. He is a regular blogger, international speaker, and technical reviewer of several BizTalk books all focused on Integration. He is also the author of the book “BizTalk Mapping Patterns & Best Practices”. He has been awarded MVP since 2011 for his contributions to the integration community.

2 thoughts on “How to determine the process ID of BizTalk Host Instances with PowerShell”

  1. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *

The Ultimate Cloud
Management Platform for Azure

Supercharge your Azure Cost Saving

Learn More
Turbo360 Widget

Back to Top