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 how we could determine 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
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:
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.