Determining the Version and Hotfix Level of Orion Platform Products

The Orion Platform product details are displayed in a number of ways and below I'm going to cover a few ways to get this information.  Try the first and if that's not available move on down the list.

I'm going to cover a few options:

  1. Look at the Orion Web Console footer
  2. Add/Remove Programs information in Windows
  3. Query the SolarWinds Information Service (SWIS) with PowerShell
  4. Query the SolarWinds Orion database with SQL

Look at the Orion Web Console footer

If you have access to the Orion Web Console, you can find the version numbers and hotfix levels right from the footer - you don't even need to log in.

Scroll to the bottom of the screen. The black bar lists the Orion Platform products installed and their version numbers. For recent releases, the version number for all installed products is at the end of the list, and any hotfixes are listed after the product name.

KMSigma_0-1610575445680.png

In the example above, the version is 2020.2.1 (at the far right)

Each installer (Orion Platform, NPM, NCM, etc.) can have their own Hotfix level.  Hotfix 1 for NPM is not the same as Hotfix 1 for SAM.  In the above example:

  • The Orion Platform, NCM, VMAN, and NTA are running 2020.2.1 with HF2
  • IPAM, SAM, SCM, LA, and UDT are running 2020.2.1 with HF1
  • VNQM, SRM, NPM, and WPM are running 2020.2.1 with no hotfixes

Add/Remove Programs information in Windows

If your server is online and you have remote desktop capabilities, you can open the Add/Remove Programs option within Windows.  Getting to the Control Panel has changed for recent versions of Windows Server, but there is a way that works on 2012 and later versions.

Right-click on the Start button and select File Explorer. 

KMSigma_1-1610576452095.png

In the address bar at the top, start typing "Control Panel" and select it when it appears.

KMSigma_2-1610576509665.png

In the top-right, switch the view to either "Small icons" or "Large icons" and then click "Programs and Features."

KMSigma_4-1610576919783.png

The version number for the products will be the number indicated by "Orion Core Services."

KMSigma_5-1610577147148.png

You can get the hotfix version for the various products by going to "View installed update" (top-left).

KMSigma_6-1610577258646.png

Query the SolarWinds Information Service (SWIS) via PowerShell

This example uses the SolarWinds Orion SDK to query the system for information about the installed software.  It requires the Orion SDK (which does not ship with the other installers).

<#

Get-OrionServerVersionInformation.ps1

Gets the installed product versions of SolarWinds products installed in your infrastructure


Results appear like this:

Hostname     ServerType Product                          Version     
--------     ---------- -------                          -------     
NOCKMSMPE01V MainPoller IP Address Manager               2020.2.1    
NOCKMSMPE01V MainPoller Log Analyzer                     2020.2.1    
NOCKMSMPE01V MainPoller NetFlow Traffic Analyzer         2020.2.1 HF2
NOCKMSMPE01V MainPoller Network Configuration Manager    2020.2.1 HF1
NOCKMSMPE01V MainPoller Network Performance Monitor      2020.2.1    
NOCKMSMPE01V MainPoller Orion Platform                   2020.2.1 HF1
NOCKMSMPE01V MainPoller Server & Application Monitor     2020.2.1 HF1
NOCKMSMPE01V MainPoller Server Configuration Monitor     2020.2.1    
NOCKMSMPE01V MainPoller Storage Resource Monitor         2020.2.1    
NOCKMSMPE01V MainPoller User Device Tracker              2020.2.1 HF1
NOCKMSMPE01V MainPoller VoIP and Network Quality Manager 2020.2.1    
NOCKMSMPE01V MainPoller Web Performance Monitor          2020.2.1    

#>


if ( -not ( $SwisCreds ) )
{
    $SwisCreds = Get-Credential -Message "Enter your Orion credentials"
}
$SwisConnection = Connect-Swis -Hostname "<Orion Server IP or HostName>" -Credential $SwisCreds

# Get the details for your Orion Servers

$SwqlOrionServerData = @"
SELECT HostName,
       ServerType,
       Details 
FROM  Orion.OrionServers 
"@

# Build an empty report for the version information
$VersionReport = @()

# List of actual product names (ignoring "features" that appear like products
$ProductNames = "IP Address Manager", "Log Analyzer", "NetFlow Traffic Analyzer", "Network Configuration Manager", "Network Performance Monitor", "Orion Platform", "Server & Application Monitor", "Server Configuration Monitor", "Storage Resource Monitor", "User Device Tracker", "VoIP and Network Quality Manager", "Web Performance Monitor"


$ServerData = Get-SwisData -SwisConnection $SwisConnection -Query $SwqlOrionServerData

# Cycle through each server found
ForEach ( $Server in $ServerData )
{
    # Get the information from the JSON blob
    ForEach ( $Product in ( $Server.Details | ConvertFrom-Json ) | Select-Object -Property Name, Version, HotfixVersionNumber | Sort-Object -Property Name, Version, HotfixVersionNumber )
    {
        # Here's where we ignore the "features" that are listed like a product
        if ( $Product.Name -in $ProductNames )
        {
            if ( $Product.HotfixVersionNumber )
            {
                # if a hotfix exists, add that at the end of the the version number
                $VersionReport += New-Object -TypeName PSObject -Property ( [ordered]@{ Hostname = $Server.Hostname; ServerType = $Server.ServerType; Product = $Product.Name; Version = "$( $Product.Version ) HF$( $Product.HotfixVersionNumber )" } )
            }
            else
            {
                # if it doesn't exist, just show the version number
                $VersionReport += New-Object -TypeName PSObject -Property ( [ordered]@{ Hostname = $Server.Hostname; ServerType = $Server.ServerType; Product = $Product.Name; Version = $Product.Version } )
            }
        }
    }
}
# Output the report
$VersionReport

Your results should appear something like this.

KMSigma_1-1608567843377.png

But this same information is stored within the database itself.  So, if your web console is completely inaccessible you can still get this information.

Query the SolarWinds Orion database with SQL

If you Orion Web Console or server are offline, you can get the same information directly from the Orion database.

/* Get a list of all of the Orion servers and the associated software on them */
SELECT [Hostname]
     , [ServerType]
	 , [Product]
	 , CASE
	      WHEN HotFix IS NULL THEN [ReleaseVersion]
		  ELSE [ReleaseVersion] + ' HF' + [HotFix]
	   END AS [Version]
FROM [OrionServers]
CROSS APPLY OPENJSON([Details])
   WITH (
      [Product]        varchar(50) '$.Name'
    , [ReleaseVersion] varchar(25) '$.Version'
	, [Hotfix]         varchar(5)  '$.HotfixVersionNumber'
   ) AS VersionInfo
-- Ignore 'products' that are actually just 'features'
WHERE [Product] in ( 'IP Address Manager', 'Log Analyzer', 'NetFlow Traffic Analyzer', 'Network Configuration Manager', 'Network Performance Monitor', 'Orion Platform', 'Server & Application Monitor', 'Server Configuration Monitor', 'Storage Resource Monitor', 'User Device Tracker', 'VoIP and Network Quality Manager', 'Web Performance Monitor' )
ORDER BY OrionServerID

Your results should appear as a list of products.

KMSigma_0-1608567717960.png

Updates:

Per a suggestion later in this thread, you can put this information into a Custom Table widget on any dashboard by selecting the Advanced Configuration and putting in the above SQL. (Thanks  for the reminder about this option!)

KMSigma_0-1608747600723.png

The results should look something like this:

KMSigma_1-1608747664972.png

References:

  • Glad to help out.  FYI -the SQL server query which uses some JSON stuff requires compatibility level 130 (SQL Server 2017).  If you don't have that available, you can just look at the details field and manually parse out the JSON by hand if necessary.  It's not too difficult.

  • Hello, Do you know is there is any way to see a version history of installed HF and products? For example you know the version you are running _NOW_ but you would like to see all the previous versions as well. Thank you for a helpful script.

  • Not with the included hotfix information, no.  There are several places where you can get the installation date of things, but those installations only include the version numbers of the MSI (or MSP) database files, not the actual version of the product platform.  We've had a whole discussion on another thread about how the MSI version is not authoritative about specific file versions existing.

  • This works great. Can you convert the SQL code to SWQL? I would like to add this to a dashboard.

    Thanks,

  • I cannot.  At this time, SWQL doesn't support the OPENJSON command.  The hotfix information is only available as JSON within the Orion.OrionServers SWIS object (to my knowledge).  If you want the full versions (without hotfixes), you can always use this SWQL Query:

    SELECT CASE
              WHEN Name = 'APM'     THEN 'Server & Application Monitor'
              WHEN Name = 'IPAM'    THEN 'IP Address Manager'
              WHEN Name = 'NCM'     THEN 'Network Configuration Manager'
              WHEN Name = 'NPM'     THEN 'Network Performance Monitor'
              WHEN Name = 'NTA'     THEN 'NetFlow Traffic Analyzer'
              WHEN Name = 'Orion'   THEN 'Orion Core'
              WHEN Name = 'SEUM'    THEN 'Web Performance Analyzer'
              WHEN Name = 'SRM'     THEN 'Storage Resource Monitor'
              WHEN Name = 'Toolset' THEN 'Enterprise Toolset'
              WHEN Name = 'UDT'     THEN 'User Device Tracker'
              WHEN Name = 'VoIP'    THEN 'VoIP & Network Quality Manager'
              WHEN Name = 'EOC'     THEN 'Enterprise Operations Console'
              WHEN Name = 'VIM'     THEN 'Virtualization Manager'
              WHEN Name = 'SCM'     THEN 'Server Configuration Monitor'
              WHEN Name = 'OLM'     THEN 'Log Manager for Orion'
              ELSE Name
         END AS [Product Name]
         , Version
         , CASE
              WHEN IsEval = 'True' THEN  CONCAT('Evaluation (', [DaysRemaining], ' days left)')
              ELSE 'Licensed'
           END AS [License Type]
          
    FROM Orion.InstalledModule
    ORDER BY CASE
              WHEN Name = 'APM'     THEN 9
              WHEN Name = 'IPAM'    THEN 5
              WHEN Name = 'NCM'     THEN 4
              WHEN Name = 'NPM'     THEN 2
              WHEN Name = 'NTA'     THEN 3
              WHEN Name = 'Orion'   THEN 0
              WHEN Name = 'SEUM'    THEN 11
              WHEN Name = 'SRM'     THEN 10
              WHEN Name = 'Toolset' THEN 8
              WHEN Name = 'UDT'     THEN 6
              WHEN Name = 'VoIP'    THEN 7
              WHEN Name = 'EOC'     THEN 1
              WHEN Name = 'VIM'     THEN 4
              WHEN Name = 'SCM'     THEN 4
              WHEN Name = 'OLM'     THEN 4
              ELSE 99
            END

    The ORDER BY is just something I did so that it would look pretty.  Note: the immediate above DOES NOT show hotfix versions.

  • Ah okay. Thanks for looking into it and the code.

  • Figured it out. Custom Tables let you use SQL--Worked like a charm. 

  • Nice!!!  I honestly forgot that was even an option.  I've been in the SWQL mindset for all of this past year, so that's just become my go-to for everything.

  • Hello,

    Wanted to know if there is any information available to determine the Software and Hotfix installation on the Solarwinds server.

    I found the following.

     
     

    You can run this query in Database Manager to see all the updates you have done.

    Select * from ConfigWizardLog where module = 'Orion Core Services'