Update: The old blog post has been updated to the following below:-

I have updated the article to include a PowerShell script that will give you all the information you need displayed in a Grid.

This script can be modified to add more build information which I will update overtime but includes CU23 for now. This is for Exchange 2016 Server Only and I will be doing the same for Exchange Server 2019.

Below is the output from the script:

    Exchange 2016:- find the cu installed on your server
    Exchange 2016:- Find the CU installed on your server 1

    Script:

    Here is the script that I will update overtime to include all the other CU’s etc.

    # Import the Exchange module
    Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
    
    
    # Define a hashtable with build numbers and corresponding product names
    $buildInfoTable = @{
        "15.01.2507.039" = "Exchange Server 2016 CU23 Apr24HU";
        "15.01.2507.037" = "Exchange Server 2016 CU23 Mar24SU";
        "15.01.2507.035" = "Exchange Server 2016 CU23 Nov23SU";
        "15.01.2507.034" = "Exchange Server 2016 CU23 Oct23SU";
        "15.01.2507.032" = "Exchange Server 2016 CU23 Aug23SUv2";
        "15.01.2507.031" = "Exchange Server 2016 CU23 Aug23SU";
        "15.01.2507.027" = "Exchange Server 2016 CU23 Jun23SU";
        "15.01.2507.023" = "Exchange Server 2016 CU23 Mar23SU";
        "15.01.2507.021" = "Exchange Server 2016 CU23 Feb23SU";
        "15.01.2507.017" = "Exchange Server 2016 CU23 Jan23SU";
        "15.01.2507.016" = "Exchange Server 2016 CU23 Nov22SU";
        "15.01.2507.013" = "Exchange Server 2016 CU23 Oct22SU";
        "15.01.2507.012" = "Exchange Server 2016 CU23 Aug22SU";
        "15.01.2507.009" = "Exchange Server 2016 CU23 May22SU";
        "15.01.2507.006" = "Exchange Server 2016 CU23 (2022H1)";
        
    }
    
    # Function to get product name based on build number
    function Get-ProductName($buildNumber) {
        if ($buildInfoTable.ContainsKey($buildNumber)) {
            $buildInfoTable[$buildNumber]
        } else {
            "Unknown Product"
        }
    }
    
    $ExchangeServers = Get-ExchangeServer | Sort-Object Name
    
    # Create an array to store the results
    $results = @()
    
    foreach ($Server in $ExchangeServers) {
        $serverName = $Server.Name
        $edition = $Server.Edition
    
        # Get Exchange version using Invoke-Command
        $version = Invoke-Command -ComputerName $Server.Name -ScriptBlock {
            Get-Command Exsetup.exe | ForEach-Object { $_.FileVersionInfo.FileVersion }
        }
    
        # Get product name from the local table
        $productName = Get-ProductName $version
    
        # Create a custom object with the information
        $resultObject = [PSCustomObject]@{
            ServerName   = $serverName
            Edition      = $edition
            Version      = $version
            ProductName  = $productName
        }
    
        # Add the result object to the results array
        $results += $resultObject
    }
    
    # Display the results in a grid
    $results | Out-GridView
    

    It takes a few seconds/minutes to run, all depending on the number of servers it has to query.

    Hope it helps.

    Discover more from COLLABORATION PRO

    Subscribe now to keep reading and get access to the full archive.

    Continue reading