Skip to content

Commit 29a7c04

Browse files
authored
Merge pull request #207 from AsBuiltReport/dev
v0.8.16 public release
2 parents 0e7e286 + 483a2e7 commit 29a7c04

16 files changed

+199
-168
lines changed

AsBuiltReport.Veeam.VBR.psd1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
RootModule = 'AsBuiltReport.Veeam.VBR.psm1'
1313

1414
# Version number of this module.
15-
ModuleVersion = '0.8.15'
15+
ModuleVersion = '0.8.16'
1616

1717
# Supported PSEditions
1818
# CompatiblePSEditions = @()
@@ -55,19 +55,19 @@
5555
RequiredModules = @(
5656
@{
5757
ModuleName = 'AsBuiltReport.Core';
58-
ModuleVersion = '1.4.2.1'
58+
ModuleVersion = '1.4.3'
5959
}
6060
@{
6161
ModuleName = 'PScriboCharts';
6262
ModuleVersion = '0.9.0'
6363
}
6464
@{
6565
ModuleName = 'Diagrammer.Core';
66-
ModuleVersion = '0.2.19'
66+
ModuleVersion = '0.2.21'
6767
}
6868
@{
6969
ModuleName = 'Veeam.Diagrammer';
70-
ModuleVersion = '0.6.20'
70+
ModuleVersion = '0.6.22'
7171
}
7272
)
7373

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
##### This project is community maintained and has no sponsorship from Veeam, its employees or any of its affiliates.
99

10+
## [0.8.16] - 2025-04-09
11+
12+
### Changed
13+
14+
- Increase Diagrammer.Core minimum requirement to v0.2.21
15+
- Increase Veeam.Diagrammer minimum requirement to v0.6.22
16+
- Increase AsBuiltReport.Core to v1.4.3
17+
18+
### Fixed
19+
20+
- Fix issue where the Syslog Event Filter section displayed content even when no configuration was available
21+
- Fix issue causing WinRM connection failures in the Backup Server section
22+
1023
## [0.8.15] - 2025-03-05
1124

1225
### Changed

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,13 @@
2222
<a href="https://twitter.com/AsBuiltReport" alt="Twitter">
2323
<img src="https://img.shields.io/twitter/follow/AsBuiltReport.svg?style=social"/></a>
2424
</p>
25-
<p align="center">
26-
<a href='https://ko-fi.com/F1F8DEV80' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://cdn.ko-fi.com/cdn/kofi1.png?v=3' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>
27-
</p>
2825

2926
> [!WARNING]
30-
> I recently decided not to apply to the Veeam Vanguard program, which was one of the main reasons for developing and maintaining this project. Therefore, I will not be maintaining or updating this report. Until someone is identified to maintain the project, this report will be frozen in terms of new capabilities.
27+
> I have recently been contacted to ask about the status of this project. Maintaining this report and all the tools that make this project work is time and resource consuming. If you want to keep this project alive, support its development by donating through ko-fi.
28+
29+
<p align="center">
30+
<a href='https://ko-fi.com/F1F8DEV80' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://ko-fi.com/img/githubbutton_sm.svg' border='0' alt='Want to keep alive this project? Support me on Ko-fi' /></a>
31+
</p>
3132

3233
#### Community Maintained Project
3334

Src/Private/Get-AbrVbrAgentBackupjobConf.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ function Get-AbrVbrAgentBackupjobConf {
7070
}
7171
$OutObj | Table @TableParams
7272
if ($HealthCheck.Jobs.BestPractice) {
73-
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $_.'Description' -eq '--' }) { Paragraph "Health Check:" -Bold -Underline
73+
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $_.'Description' -eq '--' }) {
74+
Paragraph "Health Check:" -Bold -Underline
7475
BlankLine
7576
Paragraph {
7677
Text "Best Practice:" -Bold

Src/Private/Get-AbrVbrBackupServerInfo.ps1

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ function Get-AbrVbrBackupServerInfo {
66
.DESCRIPTION
77
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
88
.NOTES
9-
Version: 0.8.14
9+
Version: 0.8.16
1010
Author: Jonathan Colon
1111
Twitter: @jcolonfzenpr
1212
Github: rebelinux
@@ -21,31 +21,36 @@ function Get-AbrVbrBackupServerInfo {
2121
)
2222

2323
begin {
24-
Write-PScriboMessage "Discovering Veeam V&R Server information from $System."
24+
Write-PScriboMessage "Discovering Veeam VB&R Server information from $System."
2525
}
2626

2727
process {
2828
try {
2929
if ($script:BackupServers = Get-VBRServer -Type Local) {
3030
Section -Style Heading3 'Backup Server' {
31+
Paragraph "The following table details information about Veeam Backup & Replication configuration status."
32+
BlankLine
3133
$OutObj = @()
3234
try {
3335
foreach ($BackupServer in $BackupServers) {
34-
if (Test-WSMan -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ComputerName $BackupServer.Name -ErrorAction SilentlyContinue) {
35-
$CimSession = try { New-CimSession $BackupServer.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -Name 'CIMBackupServer' -ErrorAction Stop } catch { Write-PScriboMessage -IsWarning "Backup Server Section: New-CimSession: Unable to connect to $($BackupServer.Name): $($_.Exception.MessageId)" }
36+
$CimSession = try { New-CimSession $BackupServer.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -Name 'CIMBackupServer' -ErrorAction Stop } catch { Write-PScriboMessage -IsWarning "Backup Server Section: New-CimSession: Unable to connect to $($BackupServer.Name): $($_.Exception.MessageId)" }
3637

37-
$PssSession = try { New-PSSession $BackupServer.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction Stop -Name 'PSSBackupServer' } catch {
38-
if (-Not $_.Exception.MessageId) {
39-
$ErrorMessage = $_.FullyQualifiedErrorId
40-
} else { $ErrorMessage = $_.Exception.MessageId }
41-
Write-PScriboMessage -IsWarning "Backup Server Section: New-PSSession: Unable to connect to $($BackupServer.Name): $ErrorMessage"
42-
}
43-
$SecurityOptions = Get-VBRSecurityOptions
38+
$PssSession = try { New-PSSession $BackupServer.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction Stop -Name 'PSSBackupServer' } catch {
39+
if (-Not $_.Exception.MessageId) {
40+
$ErrorMessage = $_.FullyQualifiedErrorId
41+
} else { $ErrorMessage = $_.Exception.MessageId }
42+
Write-PScriboMessage -IsWarning "Backup Server Section: New-PSSession: Unable to connect to $($BackupServer.Name): $ErrorMessage"
43+
}
44+
$SecurityOptions = Get-VBRSecurityOptions
45+
if ($CimSession) {
4446
try { $DomainJoined = Get-CimInstance -Class Win32_ComputerSystem -Property PartOfDomain -CimSession $CimSession } catch { 'Unknown' }
47+
}
4548
Write-PScriboMessage "Collecting Backup Server information from $($BackupServer.Name)."
49+
50+
if ($PssSession) {
4651
try {
4752
$script:VeeamVersion = Invoke-Command -Session $PssSession -ErrorAction SilentlyContinue -ScriptBlock { Get-ChildItem -Recurse HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall | Get-ItemProperty | Where-Object { $_.DisplayName -match 'Veeam Backup & Replication Server' } | Select-Object -Property DisplayVersion }
48-
} catch { Write-PScriboMessage -IsWarning "Backup Server Inkoke-Command Section: $($_.Exception.Message)" }
53+
} catch { Write-PScriboMessage -IsWarning "Backup Server Invoke-Command Section: $($_.Exception.Message)" }
4954
try {
5055
$VeeamInfo = Invoke-Command -Session $PssSession -ErrorAction SilentlyContinue -ScriptBlock { Get-ItemProperty -Path 'HKLM:\SOFTWARE\Veeam\Veeam Backup and Replication' }
5156
} catch { Write-PScriboMessage -IsWarning "Backup Server Invoke-Command Section: $($_.Exception.Message)" }
@@ -55,8 +60,11 @@ function Get-AbrVbrBackupServerInfo {
5560
try {
5661
$VeeamDBInfo = Invoke-Command -Session $PssSession -ErrorAction SilentlyContinue -ScriptBlock { Get-ItemProperty -Path "HKLM:\SOFTWARE\Veeam\Veeam Backup and Replication\DatabaseConfigurations\$(($Using:VeeamDBFlavor).SqlActiveConfiguration)" }
5762
} catch { Write-PScriboMessage -IsWarning "Backup Server Invoke-Command Section: $($_.Exception.Message)" }
58-
Write-PScriboMessage "Discovered $($BackupServer.Name) Server."
59-
} else { Write-PScriboMessage -IsWarning "Backup Server Section: Unable to connect to Backup Server throuth WinRM" }
63+
} else {
64+
Write-PScriboMessage -IsWarning "Backup Server Section: Unable to get Backup Server information: WinRM disabled or not configured on $($BackupServer.Name)."
65+
}
66+
67+
Write-PScriboMessage "Discovered $($BackupServer.Name) Server."
6068
$inObj = [ordered] @{
6169
'Server Name' = $BackupServer.Name
6270
'Is Domain Joined?' = $DomainJoined.PartOfDomain
@@ -149,10 +157,14 @@ function Get-AbrVbrBackupServerInfo {
149157
if ($Options.EnableHardwareInventory) {
150158
$BackupServer = Get-VBRServer -Type Local
151159
Write-PScriboMessage "Collecting Backup Server Inventory Summary from $($BackupServer.Name)."
152-
$License = Get-CimInstance -Query 'Select * from SoftwareLicensingProduct' -CimSession $CimSession | Where-Object { $_.LicenseStatus -eq 1 }
153-
$HWCPU = Get-CimInstance -Class Win32_Processor -CimSession $CimSession
154-
$HWBIOS = Get-CimInstance -Class Win32_Bios -CimSession $CimSession
155-
if ($HW = Invoke-Command -Session $PssSession -ScriptBlock { Get-ComputerInfo }) {
160+
161+
if ($CimSession) {
162+
$License = Get-CimInstance -Query 'Select * from SoftwareLicensingProduct' -CimSession $CimSession | Where-Object { $_.LicenseStatus -eq 1 }
163+
$HWCPU = Get-CimInstance -Class Win32_Processor -CimSession $CimSession
164+
$HWBIOS = Get-CimInstance -Class Win32_Bios -CimSession $CimSession
165+
}
166+
167+
if ($PssSession -and ($HW = Invoke-Command -Session $PssSession -ScriptBlock { Get-ComputerInfo })) {
156168
Section -Style Heading4 'Hardware & Software Inventory' {
157169
$OutObj = @()
158170
$inObj = [ordered] @{
@@ -386,6 +398,8 @@ function Get-AbrVbrBackupServerInfo {
386398
}
387399
}
388400
}
401+
} else {
402+
Write-PScriboMessage -IsWarning "Backup Server Section: Unable to get Backup Server Hardware information: WinRM disabled or not configured on $($BackupServer.Name)."
389403
}
390404
}
391405
} catch {

Src/Private/Get-AbrVbrCloudConnectCG.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ function Get-AbrVbrCloudConnectCG {
8181
}
8282
$OutObj | Sort-Object -Property 'Name' | Table @TableParams
8383
if ($HealthCheck.Jobs.BestPractice) {
84-
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $_.'Description' -eq '--' }) { Paragraph "Health Check:" -Bold -Underline
84+
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $_.'Description' -eq '--' }) {
85+
Paragraph "Health Check:" -Bold -Underline
8586
BlankLine
8687
Paragraph {
8788
Text "Best Practice:" -Bold

Src/Private/Get-AbrVbrCloudConnectGP.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ function Get-AbrVbrCloudConnectGP {
6565
}
6666
$OutObj | Sort-Object -Property 'Name' | Table @TableParams
6767
if ($HealthCheck.Jobs.BestPractice) {
68-
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $_.'Description' -eq '--' }) { Paragraph "Health Check:" -Bold -Underline
68+
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $_.'Description' -eq '--' }) {
69+
Paragraph "Health Check:" -Bold -Underline
6970
BlankLine
7071
Paragraph {
7172
Text "Best Practice:" -Bold

Src/Private/Get-AbrVbrConfigurationBackupSetting.ps1

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ function Get-AbrVbrConfigurationBackupSetting {
66
.DESCRIPTION
77
Documents the configuration of Veeam VBR in Word/HTML/Text formats using PScribo.
88
.NOTES
9-
Version: 0.8.13
9+
Version: 0.8.16
1010
Author: Jonathan Colon
1111
Twitter: @jcolonfzenpr
1212
Github: rebelinux
@@ -61,9 +61,29 @@ function Get-AbrVbrConfigurationBackupSetting {
6161
}
6262

6363
if ($HealthCheck.Infrastructure.Settings) {
64-
$OutObj | Where-Object { $_.'Enabled' -like 'No' } | Set-Style -Style Warning -Property 'Enabled'
64+
$List = @()
65+
$Num = 0
6566
$OutObj | Where-Object { $_.'Run Job Automatically' -like 'No' } | Set-Style -Style Warning -Property 'Run Job Automatically'
66-
$OutObj | Where-Object { $_.'Encryption Enabled' -like 'No' } | Set-Style -Style Critical -Property 'Encryption Enabled'
67+
foreach ( $OBJ in ($OutObj | Where-Object { $_.'Run Job Automatically' -like 'No' })) {
68+
$Num++
69+
$OBJ.'Run Job Automatically' = $OBJ.'Run Job Automatically' + " ($Num)"
70+
$List += "It's a recommended best practice to activate the 'Run job automatically' option of the Backup Configuration job."
71+
}
72+
73+
$OutObj | Where-Object { $_.'Encryption Enabled' -like 'No' } | Set-Style -Style Warning -Property 'Encryption Enabled'
74+
foreach ( $OBJ in ($OutObj | Where-Object { $_.'Encryption Enabled' -like 'No' })) {
75+
$Num++
76+
$OBJ.'Encryption Enabled' = $OBJ.'Encryption Enabled' + " ($Num)"
77+
$List += "Whenever possible, enable configuration backup encryption."
78+
}
79+
80+
$OutObj | Where-Object { $_.'Enabled' -like 'No' } | Set-Style -Style Warning -Property 'Enabled'
81+
foreach ( $OBJ in ($OutObj | Where-Object { $_.'Enabled' -eq 'No' })) {
82+
$Num++
83+
$OBJ.'Enabled' = $OBJ.'Enabled' + " ($Num)"
84+
$List += "It's a recommended best practice to enable the Backup Configuration job"
85+
}
86+
6787
$OutObj | Where-Object { $_.'LastResult' -like 'Warning' } | Set-Style -Style Warning -Property 'LastResult'
6888
$OutObj | Where-Object { $_.'LastResult' -like 'Failed' } | Set-Style -Style Critical -Property 'LastResult'
6989
}
@@ -77,32 +97,11 @@ function Get-AbrVbrConfigurationBackupSetting {
7797
$TableParams['Caption'] = "- $($TableParams.Name)"
7898
}
7999
$OutObj | Table @TableParams
80-
if ($HealthCheck.Infrastructure.BestPractice) {
81-
if ($OutObj | Where-Object { $_.'Encryption Enabled' -like 'No' -or $_.'Run Job Automatically' -like 'No' -or $_.'Enabled' -like 'No' }) {
82-
Paragraph "Health Check:" -Bold -Underline
83-
BlankLine
84-
if ($OutObj | Where-Object { $_.'Encryption Enabled' -like 'No' } ) {
85-
Paragraph {
86-
Text "Best Practice:" -Bold
87-
Text "Whenever possible, enable configuration backup encryption."
88-
}
89-
BlankLine
90-
}
91-
if ($OutObj | Where-Object { $_.'Run Job Automatically' -like 'No' }) {
92-
Paragraph {
93-
Text "Best Practice:" -Bold
94-
Text "It's a recommended best practice to activate the 'Run job automatically' option of the Backup Configuration job."
95-
}
96-
BlankLine
97-
}
98-
if ($OutObj | Where-Object { $_.'Enabled' -like 'No' }) {
99-
Paragraph {
100-
Text "Best Practice:" -Bold
101-
Text "It's a recommended best practice to enable the Backup Configuration job"
102-
}
103-
BlankLine
104-
}
105-
}
100+
if ($HealthCheck.Infrastructure.BestPractice -and $List) {
101+
Paragraph "Health Check:" -Bold -Underline
102+
BlankLine
103+
Paragraph "Best Practice:" -Bold
104+
List -Item $List -Numbered
106105
}
107106
}
108107
}

Src/Private/Get-AbrVbrEntraIDTenant.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ function Get-AbrVbrEntraIDTenant {
6464
}
6565
$OutObj | Sort-Object -Property 'Name' | Table @TableParams
6666
if ($HealthCheck.Infrastructure.BestPractice) {
67-
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $_.'Description' -eq '--' }) { Paragraph "Health Check:" -Bold -Underline
67+
if ($OutObj | Where-Object { $_.'Description' -match 'Created by' -or $_.'Description' -eq '--' }) {
68+
Paragraph "Health Check:" -Bold -Underline
6869
BlankLine
6970
Paragraph {
7071
Text "Best Practice:" -Bold

0 commit comments

Comments
 (0)