Skip to content

Commit

Permalink
Merge pull request #49 from AsBuiltReport/dev
Browse files Browse the repository at this point in the history
v0.3.8 public release
  • Loading branch information
rebelinux authored Nov 13, 2024
2 parents 3e7d6ad + 292daec commit fb5ab83
Show file tree
Hide file tree
Showing 37 changed files with 560 additions and 511 deletions.
10 changes: 10 additions & 0 deletions .github/workflows/Release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,4 +49,14 @@ jobs:
TWITTER_CONSUMER_API_SECRET: ${{ secrets.TWITTER_CONSUMER_API_SECRET }}
TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
bsky-post:
needs: publish-to-gallery
runs-on: ubuntu-latest
steps:
- uses: zentered/[email protected]
with:
post: "[New Release] ${{ github.event.repository.name }} ${{ github.event.release.tag_name }}! Check out what's new! ${{ github.event.release.html_url }} #Veeam #AsBuiltReport #PowerShell #VeeamVanguard #VeeamLegend"
env:
BSKY_IDENTIFIER: ${{ secrets.BSKY_IDENTIFIER }}
BSKY_PASSWORD: ${{ secrets.BSKY_PASSWORD }}

4 changes: 2 additions & 2 deletions AsBuiltReport.Veeam.VB365.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
RootModule = 'AsBuiltReport.Veeam.VB365.psm1'

# Version number of this module.
ModuleVersion = '0.3.7'
ModuleVersion = '0.3.8'

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

Expand Down
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

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

## [0.3.8] - 2024-11-12

### Added

- Add code to properly display diskspace information

### Changed

- Improve detection of empty fields in tables
- Improve detection of true/false elements in tables
- Update GitHub release workflow to add post to Bluesky social platform
- Increase Diagrammer.Core to v0.2.12
- Update Sample report & diagram files

## [0.3.7] - 2024-10-12

### Changed
Expand Down
Binary file modified Samples/AsBuiltReport.Veeam.VB365.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
610 changes: 297 additions & 313 deletions Samples/Sample Veeam VB365 As Built Report.html

Large diffs are not rendered by default.

Binary file removed Samples/Sample Veeam VB365 As Built Report.pdf
Binary file not shown.
8 changes: 4 additions & 4 deletions Src/Private/Get-AbrVb365BackupCopyJob.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ function Get-AbrVb365BackupCopyJob {
.DESCRIPTION
Documents the configuration of Veeam VB365 in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.3.1
Version: 0.3.8
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -38,11 +38,11 @@ function Get-AbrVb365BackupCopyJob {
'Last Run' = $BackupCopyJob.LastRun
'Next Run' = $BackupCopyJob.NextRun
'Last Backup' = $BackupCopyJob.LastBackup
'Is Enabled' = ConvertTo-TextYN $BackupCopyJob.IsEnabled
'Description' = ConvertTo-EmptyToFiller $BackupCopyJob.Description
'Is Enabled' = $BackupCopyJob.IsEnabled
'Description' = $BackupCopyJob.Description

}
$BackupCopyJobInfo += [PSCustomObject]$InObj
$BackupCopyJobInfo += [pscustomobject](ConvertTo-HashToYN $inObj)
}

if ($HealthCheck.Jobs.BackupCopyJob) {
Expand Down
16 changes: 8 additions & 8 deletions Src/Private/Get-AbrVb365BackupJob.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ function Get-AbrVb365BackupJob {
.DESCRIPTION
Documents the configuration of Veeam VB365 in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.3.1
Version: 0.3.8
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -53,15 +53,15 @@ function Get-AbrVb365BackupJob {
default { 'Unknown' }
}
'Repository' = $BackupJob.Repository
'Last Status' = ConvertTo-EmptyToFiller $BackupJob.LastStatus
'Last Run' = ConvertTo-EmptyToFiller $BackupJob.LastRun
'Next Run' = ConvertTo-EmptyToFiller $BackupJob.NextRun
'Last Backup' = ConvertTo-EmptyToFiller $BackupJob.LastBackup
'Is Enabled' = ConvertTo-TextYN $BackupJob.IsEnabled
'Description' = ConvertTo-EmptyToFiller $BackupJob.Description
'Last Status' = $BackupJob.LastStatus
'Last Run' = $BackupJob.LastRun
'Next Run' = $BackupJob.NextRun
'Last Backup' = $BackupJob.LastBackup
'Is Enabled' = $BackupJob.IsEnabled
'Description' = $BackupJob.Description

}
$BackupJobInfo += [PSCustomObject]$InObj
$BackupJobInfo += [pscustomobject](ConvertTo-HashToYN $inObj)
}

if ($HealthCheck.Jobs.BackupJob) {
Expand Down
12 changes: 6 additions & 6 deletions Src/Private/Get-AbrVb365BackupRepository.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ function Get-AbrVB365BackupRepository {
.DESCRIPTION
Documents the configuration of Veeam VB365 in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.3.5
Version: 0.3.8
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -43,12 +43,12 @@ function Get-AbrVB365BackupRepository {
$false { "Disabled" }
default { "Unknown" }
}
'Is Outdated' = ConvertTo-TextYN $Repository.IsOutdated
'Is Out Of Sync' = ConvertTo-TextYN $Repository.IsOutOfSync
'Is Outdated' = $Repository.IsOutdated
'Is Out Of Sync' = $Repository.IsOutOfSync
'Capacity' = ConvertTo-FileSizeString $Repository.Capacity
'Free Space' = ConvertTo-FileSizeString $Repository.FreeSpace
'Used Space' = ConvertTo-FileSizeString ($Repository.Capacity - $Repository.FreeSpace)
'Is Long Term' = ConvertTo-TextYN $Repository.IsLongTerm
'Is Long Term' = $Repository.IsLongTerm
'Retention Type' = Switch ($Repository.RetentionType) {
'SnapshotBased' { 'Snapshot Based' }
'ItemLevel' { 'Item Level' }
Expand All @@ -66,11 +66,11 @@ function Get-AbrVB365BackupRepository {
default { $Repository.RetentionPeriod }
}
'Retention Frequency Type' = $Repository.RetentionFrequencyType
'Proxy Pool' = ConvertTo-EmptyToFiller $Repository.ProxyPool
'Proxy Pool' = $Repository.ProxyPool
'Description' = $Repository.Description

}
$RepositoryInfo += [PSCustomObject]$InObj
$RepositoryInfo += [pscustomobject](ConvertTo-HashToYN $inObj)
}

if ($InfoLevel.Infrastructure.Repository -ge 2) {
Expand Down
4 changes: 2 additions & 2 deletions Src/Private/Get-AbrVb365CloudCredential.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ function Get-AbrVb365CloudCredential {
.DESCRIPTION
Documents the configuration of Veeam VB365 in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.3.1
Version: 0.3.8
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -48,7 +48,7 @@ function Get-AbrVb365CloudCredential {
'Last Modified' = $CloudCredential.LastModified
'Description' = $CloudCredential.Description
}
$CloudCredentialInfo += [PSCustomObject]$InObj
$CloudCredentialInfo += [pscustomobject](ConvertTo-HashToYN $inObj)
}

if ($InfoLevel.Infrastructure.CloudCredential -ge 2) {
Expand Down
37 changes: 19 additions & 18 deletions Src/Private/Get-AbrVb365Diagram.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ function Get-AbrVb365Diagram {
.DESCRIPTION
Diagram the configuration of Veeam Backup for Microsoft 365 infrastructure in PDF/SVG/DOT/PNG formats using PSGraph and Graphviz.
.NOTES
Version: 0.3.7
Version: 0.3.8
Author(s): Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -79,7 +79,7 @@ function Get-AbrVb365Diagram {
}

# Proxy Graphviz Cluster
$ProxyNodes = try {
try {
$ProxiesInfo = @()

$Proxies | ForEach-Object {
Expand All @@ -91,7 +91,7 @@ function Get-AbrVb365Diagram {
$ProxiesInfo += $inobj
}

Node Proxies @{Label = (Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject ($Proxies.HostName | ForEach-Object { $_.split('.')[0] }) -Align "Center" -iconType "VB365_Proxy_Server" -columnSize 3 -IconDebug $IconDebug -MultiIcon -AditionalInfo $ProxiesInfo -Subgraph -SubgraphIconType "VB365_Proxy" -SubgraphLabel "Backup Proxies" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -fontColor $Fontcolor -TableBorderColor $Edgecolor -TableBorder "1"); shape = 'plain'; fillColor = 'transparent'; fontsize = 14; fontname = "Segoe Ui" }
$ProxyNodes = Node Proxies @{Label = (Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject ($Proxies.HostName | ForEach-Object { $_.split('.')[0] }) -Align "Center" -iconType "VB365_Proxy_Server" -columnSize 3 -IconDebug $IconDebug -MultiIcon -AditionalInfo $ProxiesInfo -Subgraph -SubgraphIconType "VB365_Proxy" -SubgraphLabel "Backup Proxies" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -fontColor $Fontcolor -TableBorderColor $Edgecolor -TableBorder "1"); shape = 'plain'; fillColor = 'transparent'; fontsize = 14; fontname = "Segoe Ui" }

} catch {
Write-PScriboMessage "Error: Unable to create Proxies Objects. Disabling the section"
Expand All @@ -107,8 +107,8 @@ function Get-AbrVb365Diagram {
}

# Proxy Pools Graphviz Cluster
$ProxyPoolNodes = try {
foreach ($ProxyPool in $ProxyPools) {
try {
$ProxyPoolNodes = foreach ($ProxyPool in $ProxyPools) {
Get-DiaHTMLTable -ImagesObj $Images -Rows ($ProxyPool.Proxies.Hostname | ForEach-Object { $_.Split('.')[0] }) -Align 'Center' -ColumnSize 2 -IconDebug $IconDebug -Subgraph -SubgraphIconType "VB365_Proxy_Server" -SubgraphLabel $ProxyPool.Name -SubgraphLabelPos "top" -fontColor $Fontcolor -TableStyle "dashed,rounded" -TableBorderColor $Edgecolor -TableBorder "1" -NoFontBold
}
} catch {
Expand All @@ -131,7 +131,7 @@ function Get-AbrVb365Diagram {
}

# Restore Operator Graphviz Cluster
$RestoreOperatorsNodes = try {
try {
$RestoreOperatorsInfo = @()
$RestoreOperators | ForEach-Object {
$OrgId = $_.OrganizationId
Expand All @@ -145,7 +145,7 @@ function Get-AbrVb365Diagram {
$RestoreOperatorsInfo += $inobj
}

Node RestoreOperators @{Label = (Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject $RestoreOperators.Name -Align "Center" -iconType "VB365_User" -columnSize 2 -IconDebug $IconDebug -MultiIcon -AditionalInfo $RestoreOperatorsInfo -Subgraph -SubgraphIconType "VB365_User" -SubgraphLabel "Restore Operators" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -fontColor $Fontcolor -TableBorderColor $Edgecolor -TableBorder "1"); shape = 'plain'; fillColor = 'transparent'; fontsize = 14; fontname = "Segoe Ui" }
$RestoreOperatorsNodes = Node RestoreOperators @{Label = (Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject $RestoreOperators.Name -Align "Center" -iconType "VB365_User" -columnSize 2 -IconDebug $IconDebug -MultiIcon -AditionalInfo $RestoreOperatorsInfo -Subgraph -SubgraphIconType "VB365_User" -SubgraphLabel "Restore Operators" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -fontColor $Fontcolor -TableBorderColor $Edgecolor -TableBorder "1"); shape = 'plain'; fillColor = 'transparent'; fontsize = 14; fontname = "Segoe Ui" }

} catch {
Write-PScriboMessage "Error: Unable to create RestoreOperators Objects. Disabling the section"
Expand All @@ -163,7 +163,7 @@ function Get-AbrVb365Diagram {
}

# Repositories Graphviz Cluster
$RepositoriesNodes = try {
try {

$RepositoriesInfo = @()

Expand All @@ -182,7 +182,7 @@ function Get-AbrVb365Diagram {
$RepositoriesInfo += $inobj
}

Node Repositories @{Label = (Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject $Repositories.Name -Align "Center" -iconType "VB365_Repository" -columnSize 3 -IconDebug $IconDebug -MultiIcon -AditionalInfo $RepositoriesInfo -Subgraph -SubgraphIconType "Veeam_Repository" -SubgraphLabel "Backup Repositories" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -fontColor $Fontcolor -TableBorderColor $Edgecolor -TableBorder "1"); shape = 'plain'; fillColor = 'transparent'; fontsize = 14; fontname = "Segoe Ui" }
$RepositoriesNodes = Node Repositories @{Label = (Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject $Repositories.Name -Align "Center" -iconType "VB365_Repository" -columnSize 3 -IconDebug $IconDebug -MultiIcon -AditionalInfo $RepositoriesInfo -Subgraph -SubgraphIconType "Veeam_Repository" -SubgraphLabel "Backup Repositories" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -fontColor $Fontcolor -TableBorderColor $Edgecolor -TableBorder "1"); shape = 'plain'; fillColor = 'transparent'; fontsize = 14; fontname = "Segoe Ui" }

} catch {
Write-PScriboMessage "Error: Unable to create Repositories Objects. Disabling the section"
Expand All @@ -199,7 +199,7 @@ function Get-AbrVb365Diagram {
}
}
# Object Repositories Graphviz Cluster
$ObjectRepositoriesNodes = try {
try {

$ObjectRepositoriesInfo = @()
$ORIconType = @()
Expand All @@ -208,7 +208,7 @@ function Get-AbrVb365Diagram {
$inobj = @{
'Type' = $_.Type
'Folder' = $_.Folder
'Immutability' = ConvertTo-TextYN $_.EnableImmutability
'Immutability' = $_.EnableImmutability
}
$ObjectRepositoriesInfo += $inobj
$ORIconType += Switch ($_.Type) {
Expand All @@ -219,7 +219,7 @@ function Get-AbrVb365Diagram {
}
}

Node ObjectRepositories @{Label = (Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject $ObjectRepositories.Name -Align "Center" -iconType $ORIconType -columnSize 3 -IconDebug $IconDebug -MultiIcon -AditionalInfo $ObjectRepositoriesInfo -Subgraph -SubgraphIconType "VB365_Object_Support" -SubgraphLabel "Object Repositories" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -fontColor $Fontcolor -TableBorderColor $Edgecolor -TableBorder "1"); shape = 'plain'; fillColor = 'transparent'; fontsize = 14; fontname = "Segoe Ui" }
$ObjectRepositoriesNodes = Node ObjectRepositories @{Label = (Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject $ObjectRepositories.Name -Align "Center" -iconType $ORIconType -columnSize 3 -IconDebug $IconDebug -MultiIcon -AditionalInfo $ObjectRepositoriesInfo -Subgraph -SubgraphIconType "VB365_Object_Support" -SubgraphLabel "Object Repositories" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -fontColor $Fontcolor -TableBorderColor $Edgecolor -TableBorder "1"); shape = 'plain'; fillColor = 'transparent'; fontsize = 14; fontname = "Segoe Ui" }

} catch {
Write-PScriboMessage "Error: Unable to create ObjectRepositories Objects. Disabling the section"
Expand All @@ -237,38 +237,39 @@ function Get-AbrVb365Diagram {
}

# Organization Graphviz Cluster
$OnPremisesNode = try {
try {
$OrganizationsInfo = @()

($Organizations | Where-Object { $_.Type -eq 'OnPremises' }) | ForEach-Object {
$inobj = @{
'Users' = "Licensed: $($_.LicensingOptions.LicensedUsersCount) - Trial: $($_.LicensingOptions.TrialUsersCount)"
'BackedUp' = ConvertTo-TextYN $_.IsBackedUp
'BackedUp' = $_.IsBackedUp
}
$OrganizationsInfo += $inobj
}

if ($OrganizationsInfo) {
Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject ($Organizations | Where-Object { $_.Type -eq 'OnPremises' }).Name -Align "Center" -iconType "Datacenter" -columnSize 3 -IconDebug $IconDebug -MultiIcon -AditionalInfo $OrganizationsInfo -Subgraph -SubgraphIconType "VB365_On_Premises" -SubgraphLabel "On-premises" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -fontColor $Fontcolor -TableBorderColor $Edgecolor -TableBorder "1"
$OnPremisesNode = Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject ($Organizations | Where-Object { $_.Type -eq 'OnPremises' }).Name -Align "Center" -iconType "Datacenter" -columnSize 3 -IconDebug $IconDebug -MultiIcon -AditionalInfo $OrganizationsInfo -Subgraph -SubgraphIconType "VB365_On_Premises" -SubgraphLabel "On-premises" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -fontColor $Fontcolor -TableBorderColor $Edgecolor -TableBorder "1"
}
} catch {
Write-PScriboMessage "Error: Unable to create OnPremises Organization Objects. Disabling the section"
Write-PScriboMessage "Error Message: $($_.Exception.Message)"
}

$Microsoft365Node = try {
try {
$OrganizationsInfo = @()

($Organizations | Where-Object { $_.Type -eq 'Office365' }) | ForEach-Object {
$inobj = @{
'Users' = "Licensed: $($_.LicensingOptions.LicensedUsersCount) - Trial: $($_.LicensingOptions.TrialUsersCount)"
'BackedUp' = ConvertTo-TextYN $_.IsBackedUp
'BackedUp' = $_.IsBackedUp
}
$OrganizationsInfo += $inobj
}

if ($OrganizationsInfo) {
Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject ($Organizations | Where-Object { $_.Type -eq 'Office365' }).Name -Align "Center" -iconType "Microsoft_365" -columnSize 3 -IconDebug $IconDebug -MultiIcon -AditionalInfo $OrganizationsInfo -Subgraph -SubgraphIconType "VB365_Microsoft_365" -SubgraphLabel "Microsoft 365" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -fontColor $Fontcolor -TableBorderColor $Edgecolor -TableBorder "1" }
$Microsoft365Node = Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject ($Organizations | Where-Object { $_.Type -eq 'Office365' }).Name -Align "Center" -iconType "Microsoft_365" -columnSize 3 -IconDebug $IconDebug -MultiIcon -AditionalInfo $OrganizationsInfo -Subgraph -SubgraphIconType "VB365_Microsoft_365" -SubgraphLabel "Microsoft 365" -SubgraphLabelPos "top" -SubgraphTableStyle "dashed,rounded" -fontColor $Fontcolor -TableBorderColor $Edgecolor -TableBorder "1"
}
} catch {
Write-PScriboMessage "Error: Unable to create Microsoft365 Organization Objects. Disabling the section"
Write-PScriboMessage "Error Message: $($_.Exception.Message)"
Expand Down
4 changes: 2 additions & 2 deletions Src/Private/Get-AbrVb365EncryptionKey.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ function Get-AbrVB365EncryptionKey {
.DESCRIPTION
Documents the configuration of Veeam VB365 in Word/HTML/Text formats using PScribo.
.NOTES
Version: 0.3.1
Version: 0.3.8
Author: Jonathan Colon
Twitter: @jcolonfzenpr
Github: rebelinux
Expand Down Expand Up @@ -37,7 +37,7 @@ function Get-AbrVB365EncryptionKey {
'Last Modified' = $EncryptionKey.LastModified
'Used At' = $UsedAT -join ", "
}
$EncryptionKeyInfo += [PSCustomObject]$InObj
$EncryptionKeyInfo += [pscustomobject](ConvertTo-HashToYN $inObj)
}

if ($InfoLevel.Infrastructure.EncryptionKey -ge 2) {
Expand Down
Loading

0 comments on commit fb5ab83

Please sign in to comment.