Skip to content

Commit

Permalink
Merge pull request #162 from AsBuiltReport/dev
Browse files Browse the repository at this point in the history
v0.8.7 public release
  • Loading branch information
rebelinux authored May 28, 2024
2 parents 93ad345 + 91ce2bb commit 81f8669
Show file tree
Hide file tree
Showing 63 changed files with 232 additions and 299 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
4 changes: 2 additions & 2 deletions AsBuiltReport.Veeam.VBR.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
RootModule = 'AsBuiltReport.Veeam.VBR.psm1'

# Version number of this module.
ModuleVersion = '0.8.6'
ModuleVersion = '0.8.7'

# Supported PSEditions
# CompatiblePSEditions = @()
Expand Down Expand Up @@ -63,7 +63,7 @@
}
@{
ModuleName = 'Veeam.Diagrammer';
ModuleVersion = '0.5.9'
ModuleVersion = '0.6.0'
}
)

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
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,23 @@ 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] - 2024-05-28

### Added

- 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

### Changed

- Disable the Backup Restore section (Some users reported issues with this section)
- Increase Veeam.Diagrammer module minimum requirement to v0.6.0

### Fixed

- Fix sorting of table [A-Z].

## [0.8.6] - 2024-04-29

### Added
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
18 changes: 7 additions & 11 deletions Src/Private/Get-AbrVbrBackupProxy.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrBackupProxy {
.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 @@ -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
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" }
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 @@ -378,7 +376,7 @@ function Get-AbrVbrBackupProxy {
if ($InfoLevel.Infrastructure.Proxy -ge 1) {
Write-PScriboMessage "Backup Proxy InfoLevel set at $($InfoLevel.Infrastructure.Proxy)."
Write-PScriboMessage "Collecting Veeam Services Information."
$BackupProxies = Get-VBRViProxy | Where-Object { $_.Host.Type -eq "Windows" }
$BackupProxies = Get-VBRViProxy | Where-Object { $_.Host.Type -eq "Windows" } | Sort-Object -Property Name
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
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
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 Expand Up @@ -808,7 +804,7 @@ function Get-AbrVbrBackupProxy {
if ($InfoLevel.Infrastructure.Proxy -ge 1) {
Write-PScriboMessage "Backup Proxy InfoLevel set at $($InfoLevel.Infrastructure.Proxy)."
Write-PScriboMessage "Collecting Veeam Service Information."
$BackupProxies = Get-VBRHvProxy
$BackupProxies = Get-VBRHvProxy | Sort-Object -Property Name
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
23 changes: 7 additions & 16 deletions Src/Private/Get-AbrVbrBackupServerInfo.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function Get-AbrVbrBackupServerInfo {
.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-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,10 @@ 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* }
$Available = Invoke-Command -Session $PssSession -ScriptBlock { Get-Service "W32Time" | Select-Object DisplayName, Name, Status }
if ($Available) {
$Services = Invoke-Command -Session $PssSession -ScriptBlock { Get-Service Veeam* }
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 81f8669

Please sign in to comment.