Src/Private/Report/Get-AbrVbrRequiredModule.ps1
|
function Get-AbrVbrRequiredModule { <# .SYNOPSIS Function to check if the required version of Veeam.Backup.PowerShell is installed .DESCRIPTION Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo. .NOTES Version: 0.8.26 Author: Jonathan Colon Twitter: @jcolonfzenpr Github: rebelinux Credits: Iain Brighton (@iainbrighton) - PScribo module .LINK https://github.com/AsBuiltReport/AsBuiltReport.Veeam.VBR #> [CmdletBinding()] param ( [Parameter(Mandatory = $true, ValueFromPipeline = $false)] [ValidateNotNullOrEmpty()] [String] $Name, [Parameter(Mandatory = $true, ValueFromPipeline = $false)] [ValidateNotNullOrEmpty()] [String] $Version ) process { switch ($PSVersionTable.PSEdition) { 'Core' { switch ($PSVersionTable.Platform) { 'Unix' { $script:ClientOSVersion = 'Unix' if (Test-Path '/opt/veeam/powershell/Veeam.Backup.PowerShell/Veeam.Backup.PowerShell.psd1' ) { $MyModulePath = '/opt/veeam/powershell/Veeam.Backup.PowerShell/' $env:PSModulePath = $env:PSModulePath + "$([System.IO.Path]::PathSeparator)$MyModulePath" } } 'Win32NT' { $script:ClientOSVersion = 'Win32NT' if (Test-Path 'C:\Program Files\Veeam\Backup and Replication\Console\' ) { $MyModulePath = 'C:\Program Files\Veeam\Backup and Replication\Console\' $env:PSModulePath = $env:PSModulePath + "$([System.IO.Path]::PathSeparator)$MyModulePath" } elseif (Test-Path 'D:\Program Files\Veeam\Backup and Replication\Console\' ) { $MyModulePath = 'D:\Program Files\Veeam\Backup and Replication\Console\' $env:PSModulePath = $env:PSModulePath + "$([System.IO.Path]::PathSeparator)$MyModulePath" } elseif (Test-Path 'E:\Program Files\Veeam\Backup and Replication\Console\' ) { $MyModulePath = 'E:\Program Files\Veeam\Backup and Replication\Console\' $env:PSModulePath = $env:PSModulePath + "$([System.IO.Path]::PathSeparator)$MyModulePath" } } } } 'Desktop' { $script:ClientOSVersion = 'Win32NT' if (Test-Path 'C:\Program Files\Veeam\Backup and Replication\Console\' ) { $MyModulePath = 'C:\Program Files\Veeam\Backup and Replication\Console\' $env:PSModulePath = $env:PSModulePath + "$([System.IO.Path]::PathSeparator)$MyModulePath" } elseif (Test-Path 'D:\Program Files\Veeam\Backup and Replication\Console\' ) { $MyModulePath = 'D:\Program Files\Veeam\Backup and Replication\Console\' $env:PSModulePath = $env:PSModulePath + "$([System.IO.Path]::PathSeparator)$MyModulePath" } elseif (Test-Path 'E:\Program Files\Veeam\Backup and Replication\Console\' ) { $MyModulePath = 'E:\Program Files\Veeam\Backup and Replication\Console\' $env:PSModulePath = $env:PSModulePath + "$([System.IO.Path]::PathSeparator)$MyModulePath" } } } if ($Modules = Get-Module -ListAvailable -Name Veeam.Backup.PowerShell) { try { Write-PScriboMessage 'Trying to import Veeam B&R modules.' $Modules | Import-Module -DisableNameChecking -Global -WarningAction SilentlyContinue } catch { Write-PScriboMessage -IsWarning 'Failed to load Veeam Modules' } } Write-PScriboMessage 'Identifying Veeam Powershell module version.' if ($Module = Get-Module -ListAvailable -Name Veeam.Backup.PowerShell) { try { $script:VbrVersion = $Module.Version.ToString() Write-PScriboMessage "Using Veeam Powershell module version $($VbrVersion)." } catch { Write-PScriboMessage -IsWarning 'Failed to get Version from Module' } } # Check if the required version of VMware PowerCLI is installed $RequiredModule = Get-Module -ListAvailable -Name $Name $ModuleVersion = '{0}.{1}' -f $RequiredModule.Version.Major, $RequiredModule.Version.Minor if ($ModuleVersion -ge 13) { throw 'Veeam Backup & Replication v13 in any variant (Windows or Appliance) is not supported. Veeam Backup & Replication v13 introduces several new features and improvements, one of which is support for .Net Core. To support this version of .Net, it is necessary to update the AsBuiltReport.Veeam.VBR report to work in PowerShell v7. This effort requires many hours of work that place an additional burden on my already heavy work schedule. If you wish to support this effort, please do not hesitate to donate! https://ko-fi.com/jcolonfzenpr/goal?g=0' } if ($ModuleVersion -eq '.') { if ($ClientOSVersion -eq 'Unix') { throw "$Name $Version or higher is required to run the Veeam VBR As Built Report. Install the Veeam PowerShell module for linux that provide the required modules (https://helpcenter.veeam.com/docs/vbr/powershell/running_ps_sessions_linux.html?ver=13)." } else { throw "$Name $Version or higher is required to run the Veeam VBR As Built Report. Install the Veeam Backup & Replication console that provide the required modules." } } if ($ModuleVersion -lt $Version) { if ($ClientOSVersion -eq 'Unix') { throw "$Name $Version or higher is required to run the Veeam VBR As Built Report. Update the Veeam PowerShell module for linux that provide the required modules (https://helpcenter.veeam.com/docs/vbr/powershell/running_ps_sessions_linux.html?ver=13)." } else { throw "$Name $Version or higher is required to run the Veeam VBR As Built Report. Update the Veeam Backup & Replication console that provide the required modules." } } } end {} } |