Easily Identify Your vCenter Version and Update Needs with PowerShell (Get-vCenterVersion)

If you are working with VMware environments, particularly with vCenter Server, it’s important to keep track of the version and build number of your vCenter instances. This script/function, Get-vCenterVersion, is designed to help you retrieve these details effortlessly. Here, we’ll break down my script, explaining each section, and provide examples of how to use it.

Overview of the Script

The Get-vCenterVersion function is a PowerShell script that retrieves the version and build number of a specified vCenter Server. It compares the build number against a predefined mapping to provide detailed information about the vCenter version, release date, and other associated details. This can be extremely useful for maintaining and upgrading your VMware infrastructure.

You can find the full script linked at the end of this article. 🙂

Sections of the Script

  1. Script Header and Metadata
<#
    .SYNOPSIS
    This function retrieves the vCenter version and build number. 
    Based on https://knowledge.broadcom.com/external/article?legacyId=2143838

    .NOTES
    File Name      : get-vcenter-version.ps1
    Author         : Stanislav Musil
    Prerequisite   : PowerShell
    Website        : https://vpxd.dc5.cz/index.php/category/blog/
    X (Twitter)    : https://www.x.com/stmusil

    .DESCRIPTION
    The script is a function that takes a single parameter, the vCenter server name. Retrieves the version and build number. 
    To use the function, you can dot-source the script and then call the function. 
    Windows:   . .\get-vcenter-version.ps1
    Mac/Linux: . ./get-vcenter-version.ps1

    .EXAMPLE
    Get-vCenterVersion -vCenterServer "vCenter.DC5.cz"
    or
    Get-vCenterVersion
#>

This section provides a summary of what the script does, including the author’s information, and usage instructions. It also includes an example of how to invoke the function. This is a standard way to document PowerShell scripts and makes it easier for others to understand and use your script.

  1. Parameter Declaration
Param (
    [Parameter(Mandatory=$false)]
    [VMware.VimAutomation.ViCore.Util10.VersionedObjectImpl]$vCenterServer
)

Here, the script defines a parameter $vCenterServer, which is not mandatory. If the user does not provide a value, the script will use the default vCenter Server from the global environment variable $global:DefaultVIServer.

  1. vCenter Version Mappings
$vCenterVersionMappings = @{
    "24026615"="vCenter Server 7.0 Update 3r","17.06.2024","7.0.3.02000","24026615","24026615"
    "23788036"="vCenter Server 7.0 Update 3q","21.05.2024","7.0.3.01900","23788036","23788036"
    ...
}

This dictionary (hashtable) contains a mapping of vCenter Server build numbers to their corresponding versions, release dates, and other details. This is the core of the script, enabling it to look up detailed information based on the build number.

  1. Retrieving and Matching vCenter Build and Version
$vCenterServerVersion = $vCenterServer.Version
$vCenterServerBuild = $vCenterServer.Build
$vCenterVersion,$vCenterReleaseDate,$vCenterVersionFull,$vCenterReleaseDate,$vCenterMobVersion = "Unknown","Unknown","Unknown","Unknown","Unknown"
$vCenterName = $vCenterServer.Name

The script retrieves the version and build number from the provided or default vCenter Server. If the build number exists in the predefined mappings, the script retrieves the corresponding details.

  1. Outputting the Information
$out = [pscustomobject] @{
    vCenter_Name = $vCenterName;
    vCenter_Build = $vCenterServerBuild;
    vCenter_ReleaseName = $vCenterServerVersion;
    vCenter_MOB = $vCenterMobVersion;
    vCenter_VAMI = $VAMI;
    vCenter_Version_Full = $vCenterVersionFull;
    Release_Date = $vCenterReleaseDate;
}
$out

The script constructs a custom PowerShell object to output the details in a structured format. This makes it easy to further process or display the information.

  1. Upgrade Check
if ($vCenterServerBuild -lt $greatestKey) {
    Write-Host "vCenter upgrade possible. `n" -ForegroundColor Red
} elseif ($vCenterServerBuild -eq $greatestKey) {
    Write-Host "Latest version/ up to date. `n" -ForegroundColor Green
} else {
    Write-Host "Update this script, looks like it's outdated. `n"  -ForegroundColor Magenta
}

Finally, the script compares the retrieved build number with the highest build number in the mapping to determine if an upgrade is available, if the system is up to date, or if the script itself needs updating.

Example Usage

Example 1: Retrieve vCenter Version with Default Server

If you are already connected to a vCenter Server and set it as the default ($global:DefaultVIServer), you can simply run:

Get-vCenterVersion

Example 2: Specify a vCenter Server

To retrieve the version for a specific vCenter Server, provide the server’s name:

Get-vCenterVersion -vCenterServer "vCenter.DC5.cz"

This will output detailed information about the vCenter Server, including its version, build number, and release date. If the vCenter Server is not on the latest version, the script will suggest that an upgrade is possible.

My homelab:

Conclusion

The Get-vCenterVersion script is a powercli function for anyone managing VMware vCenter Servers. By automating the retrieval and checking of vCenter versions, it helps ensure that your infrastructure is always up to date and secure. Whether you’re managing a single vCenter Server or multiple instances, this script can save you time and reduce the risk of version mismatches.

Feel free to customize the script to fit your environment, and remember to keep the version mapping updated as new vCenter Server versions are released!

Source code is on GitHub:

https://github.com/musil/vSphere_scripts/blob/main/vCenter/get-vcenter-version.ps1

Integrate Tanzu Platform for Kubernetes with…

Integrate Tanzu Platform for Kubernetes with…

In a first post about Tanzu Platform for Kubernetes I walked you through the process of bringing an application “from code to production” on Kubernetes using four simple commands: build, deploy, bind and scale. VMware Tanzu Platform provides everything that you need to build application […]


Broadcom Social Media Advocacy

Exploring vSphere 8.0 Update 3 and Live Patch

Exploring vSphere 8.0 Update 3 and Live Patch

With the release of vSphere 8.0 Update 3, VMware has introduced a host of new features and enhancements aimed at improving performance, security, and manageability. Among these, one of the most noteworthy additions is the Live Patch feature. In this blog, we’ll delve into the key updates in […]


Broadcom Social Media Advocacy

Episode 2 – VCF 5.2 Cloud Builder Deployment

Episode 2 – VCF 5.2 Cloud Builder Deployment

In our second episode, we focus on the deployment of the VCF Cloud Builder. Learn how to: Prepare your environment for the Cloud Builder installation. Perform the deployment step-by-step. Configure the initial settings. Discussed alternative Deployment options for the OVA. Stay tuned and don’t […]


Broadcom Social Media Advocacy

Quick Tip – Disable network traffic monitoring…

Quick Tip – Disable network traffic monitoring…

While working on some demos planned for my VMware Explore session, Tech Deep Dive: Automating VMware ESXi Installation At Scale [CODEB1574LV], I kept getting this network monitoring prompt when powering up my Nested ESXi VM running in VMware Fusion. Since Nested ESXi requires the use of […]


Broadcom Social Media Advocacy