Skip to main content

The new Veeam security bulletin is all the buzz lately with multiple CVE’s - https://www.veeam.com/kb4649 and I’m sure you’re all aware of this by now.


However, what comes with this 12.2 update is a bit of a compatibility challenge. Cloud Connect Veeam 12.2 no longer supports customers running anything older than 12.0 as a Cloud Connect tenant. Previously, Veeam 12.1 supported tenants running anything newer than Veeam 10a.


Now you probably have a conundrum. Do you know all the different Veeam versions tenants are running that are backing up or replicating to your environments? Even if you could upgrade today, how many customers are you going to break?

 

While this won’t tell you exactly which tenants have the older versions, you can at least see *which* versions are hitting your environment with this one powershell script (run it from your VCC server).

Get-CimInstance -Query "SELECT * FROM CloudTenantVersionInfo" -Namespace "ROOT\VeeamBS" | Select ProductVersion

Good luck out there!

PS: Of course you can find this in VSPC as well, but what if the customer isn’t in there? The script above will help.

Very cool one liner.  Going to try this out tomorrow and see.  I am interested to see if we do have clients that will break if we have to upgrade sooner than expected.


A full script to output the versions and their corresponding tenants is here:

Unfortunately it looks like there may be old data in the “Get-CimInstance” query that shows possibly deleted tenant information. The output of my script below should give you the name and version for any active tenants.
 

# Fetching tenant and version data
$tenants = Get-VBRCloudTenant
$tenver = Get-CimInstance -Query "SELECT * FROM CloudTenantVersionInfo" -Namespace "ROOT\VeeamBS"

# Create an array to hold the merged data
$mergedData = @()

# Loop through each tenant
foreach ($tenant in $tenants) {
# Find matching version data using the Id/InstanceUid match
$matchingVersion = $tenver | Where-Object { $_.InstanceUid -eq $tenant.Id }

# If a match is found, create a combined object
if ($matchingVersion) {
$mergedData += aPSCustomObject]@{
TenantName = $tenant.Name
TenantId = $tenant.Id
TenantEnabled = $tenant.Enabled
VMCount = $tenant.VMCount
ReplicaCount = $tenant.ReplicaCount
LastResult = $tenant.LastResult
ProductVersion = $matchingVersion.ProductVersion
ProtocolVersion = $matchingVersion.ProtocolVersion
}
}
}

# Output merged data
$mergedData

Hope this helps!


That works. Will give it a go tomorrow.


That’s great and very helpful @TylerJurgens, thank you for sharing!


Very cool one liner.  Going to try this out tomorrow and see.  I am interested to see if we do have clients that will break if we have to upgrade sooner than expected.

The if in this sentence is doing a whole lot of work.


Very cool one liner.  Going to try this out tomorrow and see.  I am interested to see if we do have clients that will break if we have to upgrade sooner than expected.

The if in this sentence is doing a whole lot of work.

🤣🤣


That’s great and very helpful @TylerJurgens, thank you for sharing!

Thanks Jim! Trying to share my knowledge where I can, this compatibility change is causing quite a kerfuffle and I knew I had something that could help, just had to spruce it up to make it better.

As they say, necessity is the mother of all invention.


This is really awesome, Tyler. We have such a great community one of our PMs said when I showed them this. 
 

We will put this QA and see if we can improve or advise for improvement here. Thanks. 


Great help here...thanks for posting this Tyler.


This is really awesome, Tyler. We have such a great community one of our PMs said when I showed them this. 
 

We will put this QA and see if we can improve or advise for improvement here. Thanks. 

 

Thanks Tim! The biggest challenge I had here was realizing that WMI Query “ROOT\VeeamBS” contained old information. Unfortunately I could find no official (re: PowerShell) method to gather the actual tenant version hitting the VCC server directly.


@TylerJurgens -- tested your script today and even added output to CSV file to allow me to edit in Excel.  Worked extermely well and allowed me to let the higher ups know about our customers still running older versions.  Now we can plan carefully for upgrades to our VCC services.

 
 
 

Updated script below. It also lists the last active date and formats the list into a table sorted by the last active date.

 

# Fetching tenant and version data
$tenants = Get-VBRCloudTenant
$tenver = Get-CimInstance -Query "SELECT * FROM CloudTenantVersionInfo" -Namespace "ROOT\VeeamBS"

# Create an array to hold the merged data
$mergedData = @()

# Loop through each tenant
foreach ($tenant in $tenants) {
# Find matching version data using the Id/InstanceUid match
$matchingVersion = $tenver | Where-Object { $_.InstanceUid -eq $tenant.Id }

# If a match is found, create a combined object
if ($matchingVersion) {
$mergedData += PSCustomObject]@{
TenantName = $tenant.Name
TenantId = $tenant.Id
TenantEnabled = $tenant.Enabled
VMCount = $tenant.VMCount
ReplicaCount = $tenant.ReplicaCount
LastResult = $tenant.LastResult
ProductVersion = $matchingVersion.ProductVersion
LastActive = $tenant.LastActive
ProtocolVersion = $matchingVersion.ProtocolVersion
}
}
}

# Output merged data
$mergedData | Sort -desc LastActive | ft -autosize

 

If you prefer the list view from the previous entry, just run $mergedData rather than the full string I have including the Sort and ft functions.


Love this one with the “Last Active” included now as that let’s me see which customers have a unsupported version for 12.2.  I just create a new PS1 file and added the Export-Csv option like the previous script to output it to file. 😎


@TylerJurgens -- tested your script today and even added output to CSV file to allow me to edit in Excel.  Worked extermely well and allowed me to let the higher ups know about our customers still running older versions.  Now we can plan carefully for upgrades to our VCC services.

 
 
 

Awesome Chris! Glad you found it useful.

For anyone else, if you want to export it to a CSV, simply run this after.
 

$mergedData | Sort -desc LastActive | epcsv -NoTypeInformation c:\temp\tenantinfo.csv

 


As a side note, if the tenant is *brand new* and hasn’t completed one job yet (successfully, or unsuccessfully) the last active date will show “1/1/1900 12:00 AM”


Edit: It may also show the 1/1/1900 date if a job is currently active.

 

Also, the counts you see here are not for billing purposes. Veeam will show multiple counts if you have the same VM in multiple jobs, while Cloud Connect license metering will only bill that one time. Eg: Backup one VM in 10 jobs and you’ll see the VMCount reflect 10, while Cloud Connect backup licensing will be only 1 instance. 


Comment