Skip to content

Commit

Permalink
Merge pull request #167 from AsBuiltReport/dev
Browse files Browse the repository at this point in the history
v0.8.8 public release
  • Loading branch information
rebelinux authored Jul 26, 2024
2 parents 81f8669 + 66865e2 commit 66cd367
Show file tree
Hide file tree
Showing 14 changed files with 377 additions and 45 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/Release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ jobs:
shell: pwsh
run: |
Install-Module -Name PScriboCharts -Repository PSGallery -Force
- name: Install Diagrammer.Core module
shell: pwsh
run: |
Install-Module -Name Diagrammer.Core -Repository PSGallery -Force
- name: Install Veeam.Diagrammer module
shell: pwsh
run: |
Expand Down
6 changes: 5 additions & 1 deletion 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.7'
ModuleVersion = '0.8.8'

# Supported PSEditions
# CompatiblePSEditions = @()
Expand Down Expand Up @@ -61,6 +61,10 @@
ModuleName = 'PScriboCharts';
ModuleVersion = '0.9.0'
}
@{
ModuleName = 'Diagrammer.Core';
ModuleVersion = '0.2.1'
}
@{
ModuleName = 'Veeam.Diagrammer';
ModuleVersion = '0.6.0'
Expand Down
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,19 @@ 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).

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

## [0.8.8] - 2024-07-26

### Added

- Add Tape Infrastructure to the diagram
- Tape Server
- Tape Library
- Tape Vault
- Add Service Provider to the diagram
- Improve Infrastructure diagram error handling

## [0.8.7] - 2024-05-28

### Added
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
<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>
</p>

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

# Veeam VBR As Built Report

Veeam VBR As Built Report is a PowerShell module which works in conjunction with [AsBuiltReport.Core](https://github.com/AsBuiltReport/AsBuiltReport.Core).
Expand All @@ -36,11 +38,11 @@ Please refer to the AsBuiltReport [website](https://www.asbuiltreport.com) for m

# :books: Sample Reports

## Sample Report - Veeam Style
## Sample Report - Veeam Style with EnableHealthCheck

Sample Veeam VBR As Built Report HTML file: [Sample Report](https://htmlpreview.github.io/?https://raw.githubusercontent.com/AsBuiltReport/AsBuiltReport.Veeam.VBR/dev/Samples/Sample%20Veeam%20Backup%20%26%20Replication%20As%20Built%20Report.html)

## Sample Diagram - Veeam Style
## Sample Diagram

Sample Veeam VBR As Built Report Diagram file: [Sample Diagram](Samples/AsBuiltReport.Veeam.VBR.png)

Expand Down Expand Up @@ -161,8 +163,6 @@ The **Options** schema allows certain options within the report to be toggled on
| SignatureAuthorName | string | empty | Toggle to set signature author name. |
| SignatureCompanyName | string | empty | Toggle to set signature company name. |

###### * Note: In order to generate the infrastructure diagram, the Veeam.Diagrammer module requires the following windows application [Graphviz](https://graphviz.org/download/#windows) >= v9.0

### InfoLevel

The **InfoLevel** schema allows configuration of each section of the report at a granular level. The following sections can be set.
Expand Down Expand Up @@ -275,4 +275,4 @@ PS C:\> New-AsBuiltReport -Report Veeam.VBR -Target veeam-vbr.pharmax.local -Use

- 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.
- 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.
- This project uses the `PScribo` module to generate the report. It has been identified that the `PSWriteWord` module of `EvotecIT` uses the same cmdlet names. For this report to be generated correctly it is required to uninstall the `PSWriteWord` module.
54 changes: 45 additions & 9 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.7
Version: 0.8.8
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -122,8 +122,16 @@ function Get-AbrVbrBackupProxy {
if (Test-Connection -ComputerName $BackupProxy.Host.Name -Quiet -Count 2) {
try {
Write-PScriboMessage "Collecting Backup Proxy Inventory Summary from $($BackupProxy.Host.Name)."
$CimSession = New-CimSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication
$PssSession = New-PSSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction SilentlyContinue
# $CimSession = New-CimSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication
$CimSession = try { New-CimSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -Name 'HardwareInventory' -ErrorAction Stop } catch { Write-PScriboMessage -IsWarning "VMware Backup Proxies Hardware/Software Section: New-CimSession: Unable to connect to $($BackupProxy.Host.Name): $($_.Exception.MessageId)" }

$PssSession = try { New-PSSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction Stop -Name 'VMwareHardwareInventory' } catch {
if (-Not $_.Exception.MessageId) {
$ErrorMessage = $_.FullyQualifiedErrorId
} else { $ErrorMessage = $_.Exception.MessageId }
Write-PScriboMessage -IsWarning "VMware Backup Proxies Hardware/Software Section: New-PSSession: Unable to connect to $($BackupProxy.Host.Name): $ErrorMessage"
}
# $PssSession = New-PSSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction SilentlyContinue
if ($PssSession) {
$HW = Invoke-Command -Session $PssSession -ScriptBlock { Get-ComputerInfo }
} else { Write-PScriboMessage -IsWarning "VMware Backup Proxies Hardware/Software Inventory: Unable to connect to $($BackupProxy.Host.Name)" }
Expand Down Expand Up @@ -354,8 +362,10 @@ function Get-AbrVbrBackupProxy {
Remove-CimSession $CimSession
}
} catch {
Write-PScriboMessage -IsWarning "VMware Backup Proxies Section: $($_.Exception.Message)"
Write-PScriboMessage -IsWarning "VMware Backup Proxies Section: $($_.Exception.Message)"
}
} else {
Write-PScriboMessage -IsWarning "VMware Backup Proxies Section: Failed to Test-Connection on $($BackupProxies.Host.Name), disabling section"
}
}
if ($vSphereVBProxyObj) {
Expand All @@ -380,7 +390,13 @@ function Get-AbrVbrBackupProxy {
foreach ($BackupProxy in $BackupProxies) {
if (Test-Connection -ComputerName $BackupProxy.Host.Name -Quiet -Count 2) {
try {
$PssSession = New-PSSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction SilentlyContinue
# $PssSession = New-PSSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction SilentlyContinue
$PssSession = try { New-PSSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction Stop -Name 'VMwareBackupProxyService' } catch {
if (-Not $_.Exception.MessageId) {
$ErrorMessage = $_.FullyQualifiedErrorId
} else { $ErrorMessage = $_.Exception.MessageId }
Write-PScriboMessage -IsWarning "Backup Proxy Service Section: New-PSSession: Unable to connect to $($BackupProxy.Host.Name): $ErrorMessage"
}
if ($PssSession) {
$Available = Invoke-Command -Session $PssSession -ScriptBlock { Get-Service "W32Time" | Select-Object DisplayName, Name, Status }
Write-PScriboMessage "Collecting Backup Proxy Service information from $($BackupProxy.Name)."
Expand Down Expand Up @@ -420,6 +436,8 @@ function Get-AbrVbrBackupProxy {
} catch {
Write-PScriboMessage -IsWarning "VMware Backup Proxies $($BackupProxy.Host.Name) Services Status Section: $($_.Exception.Message)"
}
} else {
Write-PScriboMessage -IsWarning "VMware Backup Proxy Service Section: Failed to Test-Connection on $($BackupProxy.Host.Name), disabling section"
}
}
}
Expand Down Expand Up @@ -547,11 +565,19 @@ function Get-AbrVbrBackupProxy {
if (Test-Connection -ComputerName $BackupProxy.Host.Name -Quiet -Count 2) {
try {
Write-PScriboMessage "Collecting Backup Proxy Inventory Summary from $($BackupProxy.Host.Name)."
$CimSession = New-CimSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication
$PssSession = New-PSSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction SilentlyContinue
# $CimSession = New-CimSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication
# $PssSession = New-PSSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction SilentlyContinue
$CimSession = try { New-CimSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -Name 'HardwareInventory' -ErrorAction Stop } catch { Write-PScriboMessage -IsWarning "Hyper-V Backup Proxies Hardware/Software Section: New-CimSession: Unable to connect to $($BackupProxy.Host.Name): $($_.Exception.MessageId)" }

$PssSession = try { New-PSSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction Stop -Name 'HyperVHardwareInventory' } catch {
if (-Not $_.Exception.MessageId) {
$ErrorMessage = $_.FullyQualifiedErrorId
} else { $ErrorMessage = $_.Exception.MessageId }
Write-PScriboMessage -IsWarning "Hyper-V Backup Proxies Hardware/Software Section: New-PSSession: Unable to connect to $($BackupProxy.Host.Name): $ErrorMessage"
}
if ($PssSession) {
$HW = Invoke-Command -Session $PssSession -ScriptBlock { Get-ComputerInfo }
} else { Write-PScriboMessage -IsWarning "VMware Backup Proxies Inventory Section: Unable to connect to $($BackupProxy.Host.Name)" }
} else { Write-PScriboMessage -IsWarning "Hyper-V Backup Proxies Inventory Section: Unable to connect to $($BackupProxy.Host.Name)" }
if ($HW) {
$License = Get-CimInstance -Query 'Select * from SoftwareLicensingProduct' -CimSession $CimSession | Where-Object { $_.LicenseStatus -eq 1 }
$HWCPU = Get-CimInstance -Class Win32_Processor -CimSession $CimSession
Expand Down Expand Up @@ -784,6 +810,8 @@ function Get-AbrVbrBackupProxy {
} catch {
Write-PScriboMessage -IsWarning "Hyper-V Backup Proxies Hardware & Software Inventory Section: $($_.Exception.Message)"
}
} else {
Write-PScriboMessage -IsWarning "Hyper-V Backup Proxies Section: Failed to Test-Connection on $($BackupProxies.Host.Name), disabling section"
}
}
if ($HyperVBProxyObj) {
Expand All @@ -808,7 +836,13 @@ function Get-AbrVbrBackupProxy {
foreach ($BackupProxy in $BackupProxies) {
if (Test-Connection -ComputerName $BackupProxy.Host.Name -Quiet -Count 2) {
try {
$PssSession = New-PSSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction SilentlyContinue
# $PssSession = New-PSSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction SilentlyContinue
$PssSession = try { New-PSSession $BackupProxy.Host.Name -Credential $Credential -Authentication $Options.PSDefaultAuthentication -ErrorAction Stop -Name 'HyperVBackupProxyService' } catch {
if (-Not $_.Exception.MessageId) {
$ErrorMessage = $_.FullyQualifiedErrorId
} else { $ErrorMessage = $_.Exception.MessageId }
Write-PScriboMessage -IsWarning "Hyper-V Backup Proxy Service Section: New-PSSession: Unable to connect to $($BackupProxy.Host.Name): $ErrorMessage"
}
if ($PssSession) {
$Available = Invoke-Command -Session $PssSession -ScriptBlock { Get-Service "W32Time" | Select-Object DisplayName, Name, Status }
Write-PScriboMessage "Collecting Backup Proxy Service information from $($BackupProxy.Name)."
Expand Down Expand Up @@ -848,6 +882,8 @@ function Get-AbrVbrBackupProxy {
} catch {
Write-PScriboMessage -IsWarning "Hyper-V Backup Proxies Services Status - $($BackupProxy.Host.Name.Split(".")[0]) Section: $($_.Exception.Message)"
}
} else {
Write-PScriboMessage -IsWarning "Hyper-V Backup Proxies Services Section: Failed to Test-Connection on $($BackupProxy.Host.Name), disabling section"
}
}
}
Expand Down
Loading

0 comments on commit 66cd367

Please sign in to comment.