Skip to content

Commit

Permalink
v0.8.7
Browse files Browse the repository at this point in the history
  • Loading branch information
rebelinux committed May 27, 2024
1 parent a3b8a1a commit 718065d
Show file tree
Hide file tree
Showing 60 changed files with 193 additions and 274 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/Release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
needs: publish-to-gallery
runs-on: ubuntu-latest
steps:
- uses: Eomm/why-don-t-you-tweet@v1
- uses: Eomm/why-don-t-you-tweet@v2
# We don't want to tweet if the repository is not a public one
if: ${{ !github.event.repository.private }}
with:
Expand Down
2 changes: 1 addition & 1 deletion AsBuiltreport.Veeam.VBR.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
"FileShare": 1,
"Surebackup": 1,
"Replication": 1,
"Restores": 1,
"Restores": 0,
"Tape": 1
}
},
Expand Down
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,15 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.8.7] - Unreleased
## [0.8.7] - 2024-05-27

### Changed

- Fix sorting of table [A-Z].
- Disable the Backup Restore section (Some users reported issues with this section)
- Update the ReadMe file to reflect conflicts with PSWriteWord module
- Update the Eomm/why-don-t-you-tweet action to v2.0.0
- General code cleanup/improvements

## [0.8.6] - 2024-04-29

Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ The table below outlines the default and maximum **InfoLevel** settings for each
| Agent | 1 | 2 |
| FileShare | 1 | 2 |
| Replication | 1 | 2 |
| Restores | 1 | 1 |
| Restores | 0 | 1 |

The table below outlines the default and maximum **InfoLevel** settings for each Replication section.

Expand Down Expand Up @@ -274,4 +274,5 @@ PS C:\> New-AsBuiltReport -Report Veeam.VBR -Target veeam-vbr.pharmax.local -Use
## :x: Known Issues

- Since many of Veeam's features depend on the Standard+ license, the Community edition is not supported.
- If the Veeam Backup Server is not joined to an Active Directory domain (WorkGroup Auth), the PSDefaultAuthentication option must be set to Negotiate. If it is not, some of the report sections will be missing.
- If the Veeam Backup Server is not joined to an Active Directory domain (WorkGroup Auth), the PSDefaultAuthentication option must be set to Negotiate. If it is not, some of the report sections will be missing.
- This project uses the PScribo module to generate the report. It has been identified that the EvotecIT module `PSWriteWord` uses the same cmdlet names. In order for this report to be generated correctly it is necessary to uninstall the `PSWriteWord` module.
5 changes: 2 additions & 3 deletions Src/Private/Get-AbrVbrAgentBackupjob.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrAgentBackupjob {
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.5
Version: 0.8.7
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand All @@ -26,8 +26,7 @@ function Get-AbrVbrAgentBackupjob {

process {
try {
$ABkjobs = Get-VBRComputerBackupJob
if (($ABkjobs).count -gt 0) {
if ($ABkjobs = Get-VBRComputerBackupJob) {
Section -Style Heading3 'Agent Backup Jobs' {
Paragraph "The following section list agent backup jobs created in Veeam Backup & Replication."
BlankLine
Expand Down
5 changes: 2 additions & 3 deletions Src/Private/Get-AbrVbrAgentBackupjobConf.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrAgentBackupjobConf {
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.6
Version: 0.8.7
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand All @@ -26,8 +26,7 @@ function Get-AbrVbrAgentBackupjobConf {

process {
try {
$ABkjobs = Get-VBRComputerBackupJob | Sort-Object -Property Name
if (($ABkjobs).count -gt 0) {
if ($ABkjobs = Get-VBRComputerBackupJob | Sort-Object -Property Name) {
Section -Style Heading3 'Agent Backup Jobs Configuration' {
Paragraph "The following section details agent backup jobs configuration created in Veeam Backup & Replication."
BlankLine
Expand Down
5 changes: 2 additions & 3 deletions Src/Private/Get-AbrVbrBackupCopyjob .ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrBackupCopyjob {
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.0
Version: 0.8.7
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand All @@ -26,8 +26,7 @@ function Get-AbrVbrBackupCopyjob {

process {
try {
$BkCopyjobs = Get-VBRBackupCopyJob -WarningAction SilentlyContinue
if ($BkCopyjobs) {
if ($BkCopyjobs = Get-VBRBackupCopyJob -WarningAction SilentlyContinue) {
Section -Style Heading3 'Backup Copy Jobs' {
Paragraph "The following section list backup copy jobs created within Veeam Backup & Replication."
BlankLine
Expand Down
5 changes: 2 additions & 3 deletions Src/Private/Get-AbrVbrBackupCopyjobConf.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrBackupCopyjobConf {
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.6
Version: 0.8.7
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand All @@ -26,8 +26,7 @@ function Get-AbrVbrBackupCopyjobConf {

process {
try {
$Bkjobs = Get-VBRBackupCopyJob -WarningAction SilentlyContinue | Sort-Object -Property Name
if (($Bkjobs).count -gt 0) {
if ($Bkjobs = Get-VBRBackupCopyJob -WarningAction SilentlyContinue | Sort-Object -Property Name) {
Section -Style Heading3 'Backup Copy Jobs Configuration' {
Paragraph "The following section details the configuration of backup copy jobs."
BlankLine
Expand Down
8 changes: 3 additions & 5 deletions Src/Private/Get-AbrVbrBackupJobsRP.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ function Get-AbrVbrBackupJobsRP {
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.5
Version: 0.8.7
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand All @@ -24,15 +24,13 @@ function Get-AbrVbrBackupJobsRP {

process {
try {
$BackupJobs = Get-VBRBackup | Sort-Object -Property Name
if ($BackupJobs) {
if ($BackupJobs = Get-VBRBackup | Sort-Object -Property Name) {
Write-PScriboMessage "Collecting Veeam VBR Restore Point."
Section -Style Heading3 'Backup Restore Points' {
Paragraph "The following section details per Backup Job restore points."
BlankLine
foreach ($BackupJob in $BackupJobs) {
$BackupJobRestorePoints = Get-VBRRestorePoint -Backup $BackupJob | Sort-Object -Property VMName, CreationTimeUt, Type
if ($BackupJobRestorePoints) {
if ($BackupJobRestorePoints = Get-VBRRestorePoint -Backup $BackupJob | Sort-Object -Property VMName, CreationTimeUt, Type) {
Section -ExcludeFromTOC -Style NOTOCHeading4 $BackupJob.Name {
$RestorePointInfo = @()
foreach ($RestorePoint in $BackupJobRestorePoints) {
Expand Down
12 changes: 4 additions & 8 deletions Src/Private/Get-AbrVbrBackupProxy.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ function Get-AbrVbrBackupProxy {
Section -Style Heading3 'Backup Proxies' {
Paragraph "The following section provides a summary of the Veeam Backup Proxies"
BlankLine
$BackupProxies = Get-VBRViProxy | Sort-Object -Property Name
if ($BackupProxies) {
if ($BackupProxies = Get-VBRViProxy | Sort-Object -Property Name) {
Section -Style Heading4 'VMware Backup Proxies' {
$OutObj = @()
try {
Expand Down Expand Up @@ -118,8 +117,7 @@ function Get-AbrVbrBackupProxy {
Write-PScriboMessage "Hardware Inventory Status set as $($Options.EnableHardwareInventory)."
if ($Options.EnableHardwareInventory) {
Write-PScriboMessage "Collecting Hardware/Software Inventory Summary."
$BackupProxies = Get-VBRViProxy | Where-Object { $_.Host.Type -eq "Windows" } | Sort-Object -Property Name
if ($BackupProxies) {
if ($BackupProxies = Get-VBRViProxy | Where-Object { $_.Host.Type -eq "Windows" } | Sort-Object -Property Name) {
$vSphereVBProxyObj = foreach ($BackupProxy in $BackupProxies) {
if (Test-Connection -ComputerName $BackupProxy.Host.Name -Quiet -Count 2) {
try {
Expand Down Expand Up @@ -454,8 +452,7 @@ function Get-AbrVbrBackupProxy {
# Hyper-V Backup Prxy information Section #
#---------------------------------------------------------------------------------------------#
try {
$BackupProxies = Get-VBRHvProxy | Sort-Object -Property Name
if ($BackupProxies) {
if ($BackupProxies = Get-VBRHvProxy | Sort-Object -Property Name) {
Section -Style Heading4 'Hyper-V Backup Proxies' {
$OutObj = @()
if ($InfoLevel.Infrastructure.Proxy -eq 1) {
Expand Down Expand Up @@ -545,8 +542,7 @@ function Get-AbrVbrBackupProxy {
if ($Options.EnableHardwareInventory) {
Write-PScriboMessage "Backup Proxy InfoLevel set at $($InfoLevel.Infrastructure.Proxy)."
Write-PScriboMessage "Collecting Hardware/Software Inventory Summary."
$BackupProxies = Get-VBRHvProxy | Sort-Object -Property Name
if ($BackupProxies) {
if ($BackupProxies = Get-VBRHvProxy | Sort-Object -Property Name) {
$HyperVBProxyObj = foreach ($BackupProxy in $BackupProxies) {
if (Test-Connection -ComputerName $BackupProxy.Host.Name -Quiet -Count 2) {
try {
Expand Down
5 changes: 2 additions & 3 deletions Src/Private/Get-AbrVbrBackupServerCertificate.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrBackupServerCertificate {
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.5
Version: 0.8.7
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand All @@ -26,8 +26,7 @@ function Get-AbrVbrBackupServerCertificate {

process {
try {
$TLSSettings = Get-VBRBackupServerCertificate
if ($TLSSettings) {
if ($TLSSettings = Get-VBRBackupServerCertificate) {
Section -Style Heading4 'Backup Server TLS Certificate' {
$OutObj = @()
try {
Expand Down
20 changes: 5 additions & 15 deletions Src/Private/Get-AbrVbrBackupServerInfo.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ function Get-AbrVbrBackupServerInfo {

process {
try {
$script:BackupServers = Get-VBRServer -Type Local
if (($BackupServers).count -gt 0) {
if ($script:BackupServers = Get-VBRServer -Type Local) {
Section -Style Heading3 'Backup Server' {
$OutObj = @()
try {
Expand Down Expand Up @@ -123,17 +122,10 @@ function Get-AbrVbrBackupServerInfo {
Paragraph "Health Check:" -Bold -Underline
BlankLine
Paragraph {
Text 'Best Practice:' -Bold

Text 'For the most secure deployment, Veeam recommend three options:'
Text "Best Practice:" -Bold
Text "When setting up the Veeam Availability infrastructure keep in mind the principle that a data protection system should not rely on the environment it is meant to protect in any way! This is because when your production environment goes down along with its domain controllers, it will impact your ability to perform actual restores due to the backup server's dependency on those domain controllers for backup console authentication, DNS for name resolution, etc."
}
BlankLine
Paragraph '1. Add the Veeam components to a management domain that resides in a separate Active Directory Forest and protect the administrative accounts with two-factor authentication mechanics.'

Paragraph '2. Add the Veeam components to a separate workgroup and place the components on a separate network where applicable.'

Paragraph '3. Add the Veeam components to the production domain but make sure the accounts with administrative privileges are protected with two-factor authentication.'
BlankLine
Paragraph {
Text 'Reference:' -Bold
Text 'https://bp.veeam.com/vbr/Security/Security_domains.html'
Expand All @@ -149,11 +141,10 @@ function Get-AbrVbrBackupServerInfo {
if ($Options.EnableHardwareInventory) {
$BackupServer = Get-VBRServer -Type Local
Write-PScriboMessage "Collecting Backup Server Inventory Summary from $($BackupServer.Name)."
$HW = Invoke-Command -Session $PssSession -ScriptBlock { Get-ComputerInfo }
$License = Get-CimInstance -Query 'Select * from SoftwareLicensingProduct' -CimSession $CimSession | Where-Object { $_.LicenseStatus -eq 1 }
$HWCPU = Get-CimInstance -Class Win32_Processor -CimSession $CimSession
$HWBIOS = Get-CimInstance -Class Win32_Bios -CimSession $CimSession
if ($HW) {
if ($HW = Invoke-Command -Session $PssSession -ScriptBlock { Get-ComputerInfo }) {
Section -Style Heading4 'Hardware & Software Inventory' {
$OutObj = @()
$inObj = [ordered] @{
Expand Down Expand Up @@ -477,10 +468,9 @@ function Get-AbrVbrBackupServerInfo {
try {
Write-PScriboMessage "Infrastructure Backup Server InfoLevel set at $($InfoLevel.Infrastructure.BackupServer)."
if ($InfoLevel.Infrastructure.BackupServer -ge 2) {
$Available = Invoke-Command -Session $PssSession -ScriptBlock { Get-Service "W32Time" | Select-Object DisplayName, Name, Status }
Write-PScriboMessage "Collecting Backup Server Service Summary from $($BackupServer.Name)."
$Services = Invoke-Command -Session $PssSession -ScriptBlock { Get-Service Veeam* }
if ($Available) {
if ($Available = Invoke-Command -Session $PssSession -ScriptBlock { Get-Service "W32Time" | Select-Object DisplayName, Name, Status }) {
Section -Style Heading4 "HealthCheck - Services Status" {
$OutObj = @()
foreach ($Service in $Services) {
Expand Down
5 changes: 2 additions & 3 deletions Src/Private/Get-AbrVbrBackupToTape.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrBackupToTape {
.DESCRIPTION
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.8.5
Version: 0.8.7
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand All @@ -26,8 +26,7 @@ function Get-AbrVbrBackupToTape {

process {
try {
$TBkjobs = Get-VBRTapeJob | Where-Object { $_.Type -eq 'BackupToTape' } | Sort-Object -Property Name
if ($TBkjobs) {
if ($TBkjobs = Get-VBRTapeJob | Where-Object { $_.Type -eq 'BackupToTape' } | Sort-Object -Property Name) {
Section -Style Heading3 'Backup To Tape Job Configuration' {
Paragraph "The following section details the configuration about the backup to tape jobs ."
BlankLine
Expand Down
Loading

0 comments on commit 718065d

Please sign in to comment.