Why Scripts Matter More Than Documentation
We cannot rely on documentation—even when it exists—to accurately reflect what is installed on each machine in an environment. Over time, environments change, updates are applied inconsistently, and documentation quickly becomes outdated.
Because of that, scripts remain the most reliable way to understand the real state of a BizTalk environment.
This PowerShell script continues a series of scripts I previously released to identify which Cumulative Updates are installed across BizTalk Server environments:
- How to check what BizTalk Server 2016 Cumulative Updates are installed in your Servers with PowerShell
- How to Check what BizTalk Server 2013 R2 Cumulative Updates are installed in your Servers with PowerShell
- How to check what BizTalk Server 2013 Cumulative Updates are installed in your Servers with PowerShell
- How to check what BizTalk Server 2010 Cumulative Updates are installed in your Servers with PowerShell
The Introduction of Feature Packs in BizTalk Server 2016
With BizTalk Server 2016, Microsoft introduced a new servicing model called Feature Packs.
Instead of waiting years for a new major release, Microsoft now delivers new functionality as soon as it is ready. This approach allows non‑breaking features to reach customers much faster.
BizTalk Server uses Feature Packs to deliver improvements, new capabilities, and tighter integration with Azure. Feature Pack 1, for example, extends functionality in key areas such as deployment, analytics, and runtime behavior.
Feature Packs are available to:
- Customers running BizTalk Server 2016 in Azure under an Enterprise Agreement
- Software Assurance customers using BizTalk Server 2016 Developer or Enterprise editions
📝 One-Minute Brief
A practical guide that shows how to use PowerShell to determine which BizTalk Server 2016 Feature Packs are installed, helping administrators validate environments, troubleshoot issues, and confirm supported configurations.
Why You Must Track Feature Packs Explicitly
This new model changes the way BizTalk environments are maintained.
People responsible for monitoring and maintaining BizTalk Server environments must now verify more than just Cumulative Updates. Although CUs remain the most critical element, Feature Packs also influence supported configurations and runtime behavior.
If an organization decides to install Feature Packs, administrators must know:
- Whether Feature Packs are installed.
- Which Feature Packs are installed?
- On which machines are they installed?
Unfortunately, this task is not as simple as it sounds.
The Need for Automation
Manually checking Feature Packs across servers is just as painful as verifying Cumulative Updates. Therefore, automation becomes essential.
This PowerShell approach provides a consistent, repeatable, and reliable way to identify Feature Pack installations across BizTalk Server 2016 environments—without relying on outdated documentation.
Of course, there are some ways to check that, for example:
- You can do it manually by checking Control Panel\Programs\Programs and Features, then viewing View Installed Updates. However, this can be a very annoying and sometimes time-consuming task.
- You can use the Windows Registry, but still, if you only want to check what FPs are installed, this will be an annoying and time-consuming task.
Probably there are other ways, nevertheless, I just want a quick and very easy way, because this is a basic and very simple task, to know what the BizTalk Server 2016 Feature Packs are installed, like:
Microsoft BizTalk Server 2016 Feature Pack 1 is installed
Microsoft BizTalk Server 2016 Feature Pack 2 is installed
How to check what BizTalk Server 2016 Feature Packs are
So how can we easily automate tasks? and reuse them whenever necessary while saving significant time for other tasks?
Using PowerShell is a good option. Windows PowerShell is a Windows command-line shell designed especially for system administrators and can be used by BizTalk administrators to help them automate repetitive tasks or tasks that are time-consuming to perform manually.
This is a simple script that allows you to configure the template name of the feature packs, which may change from version to version (FP1, FP2, …), and will give you the list of all Feature Packs installed on your machine:
$keys = Get-ChildItem -Path Registry::'HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\E-Business Servers Updates\'
#...
foreach ($key in $keys)
{
if($findF1 -eq $true)
{
break
}
foreach ($Property in $key.Property)
{
if ($Property -like '*Microsoft BizTalk Server 2016 Feature Pack 1*')
{
$findF1 = 1
Write-Host 'Microsoft BizTalk Server 2016 Feature Pack 1 is installed'
break
}
}
}
#...
foreach ($Property in $key.Property)
{
if ($Property -like '*Microsoft BizTalk Server 2016 Feature Update 2*')
{
$findF2 = 1
Write-Host 'Microsoft BizTalk Server 2016 Feature Pack 2 is installed'
break
}
}
#...
if(($findF1 -eq $false) -And ($findF2 -eq $false))
{
Write-Host 'Microsoft BizTalk Server 2016 Feature Pack is not installed'
}
Download
THIS POWERSHELL IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.
You can download Check which BizTalk Server 2016 Feature Packs installed 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.

