W`jF9F4%I6K%&z2pn8n8-i~-e+qb8zV&4wu*OLOlibMj$w72yZr7Gqd
z^qszdwcMq$I4uh(b#bCz(f7pn_(?g3Q^q~rx&klwo}oTz=(RoWf`=3MMU^glGah2Y
zZ`xAz1<)y3A8GFNy&7`IFwF+OdVy5dM5LBF3RhKIN@p}oMOHMQDMMwvY`BM4B1=57
z*m?p6FeR&aEaWSw046>iNGqTXRkJ
z$L9a+tX6q8Xmn93UY`D!Z+`c1(XXo;;NKukxwlm%Ho2Oqup_3DdVVZTOc{M#|1gxk
zFJFqV&Q#(&G7LB=X>Yu&%-Od-*=HapWpR{h1m{U^raT
zxS{vCmG^0v(tNUu?gF2$LT?Y+t9EyDhU`d*t{`_@1P}UvYPX&nvz;D!A>7B$*>vo%
zku3b>tq4I$D?3<}k!?WdLDmdtJU@*D@waJ!#T@B*qDh
zuye4AN^^p$*S~t9fshh&*2vlGiD0N|a}Pi{uB!qZ?0{e^PRIGT_I(^ARPj6if#mmt
z|Nfs&HACkWTe9v0p;wMOVCx{j+}UG492&_>{@=KP&%FP}b3gbE6kywHK4P;VGtI;z
Sb7jGI0sw=;4NLWL#Qy*-yViFA
diff --git a/icons/Veeam_Service_Provider_Server.png b/icons/Veeam_Service_Provider_Server.png
new file mode 100644
index 0000000000000000000000000000000000000000..71a473b5d7cc2e0d85bcb42dbccaa4c6b774f2a1
GIT binary patch
literal 11295
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
Date: Sat, 20 Jul 2024 07:06:16 -0400
Subject: [PATCH 11/14] Update CHANGELOG.md
---
CHANGELOG.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 29499f7..0b9a7b7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
+- Added Tape Infrastructure to the diagram
+ - Tape Server
+ - Tape Library
+ - Tape Vault
+- Added Service Provider to the diagram
+
## [0.8.7] - 2024-05-28
### Added
From c1c4bdbbd07c8fca477ca108281c3c156778710d Mon Sep 17 00:00:00 2001
From: Jonathan Colon
Date: Sat, 20 Jul 2024 07:13:02 -0400
Subject: [PATCH 12/14] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 09a6d48..8b37c1e 100644
--- a/README.md
+++ b/README.md
@@ -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.
From 63aabb277e1f409232a967bdc4d032308a482dde Mon Sep 17 00:00:00 2001
From: Jonathan Colon
Date: Fri, 26 Jul 2024 16:36:52 -0400
Subject: [PATCH 13/14] Improved Infrastructure Diagram
---
Src/Private/Get-AbrVbrDiagram.ps1 | 89 +++++++++++--------
Src/Public/Invoke-AsBuiltReport.Veeam.VBR.ps1 | 2 +-
2 files changed, 54 insertions(+), 37 deletions(-)
diff --git a/Src/Private/Get-AbrVbrDiagram.ps1 b/Src/Private/Get-AbrVbrDiagram.ps1
index f013722..3f393a7 100644
--- a/Src/Private/Get-AbrVbrDiagram.ps1
+++ b/Src/Private/Get-AbrVbrDiagram.ps1
@@ -392,16 +392,6 @@ function Get-AbrVbrDiagram {
}
}
- # WanAccels Graphviz Cluster
- $WanAccels = Get-VbrWanAccelInfo
- if ($WanAccels) {
- SubGraph WanAccels -Attributes @{Label = (Get-DiaHTMLLabel -ImagesObj $Images -Label "Wan Accelerators" -IconType "VBR_Wan_Accel" -SubgraphLabel -IconDebug $IconDebug); fontsize = 18; penwidth = 1.5; labelloc = 't'; style = 'dashed,rounded' } {
-
- Node WanAccelServer @{Label = (Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject ($WanAccels | ForEach-Object { $_.Name.split('.')[0] }) -Align "Center" -iconType "VBR_Wan_Accel" -columnSize 3 -IconDebug $IconDebug -MultiIcon -AditionalInfo $WanAccels.AditionalInfo); shape = 'plain'; fillColor = 'transparent'; fontsize = 14; fontname = "Segoe Ui" }
-
- }
- }
-
# SOBR Graphviz Cluster
$SOBR = Get-VbrSOBRInfo
if ($SOBR) {
@@ -447,6 +437,16 @@ function Get-AbrVbrDiagram {
}
}
+ # WanAccels Graphviz Cluster
+ $WanAccels = Get-VbrWanAccelInfo
+ if ($WanAccels) {
+ SubGraph WanAccels -Attributes @{Label = (Get-DiaHTMLLabel -ImagesObj $Images -Label "Wan Accelerators" -IconType "VBR_Wan_Accel" -SubgraphLabel -IconDebug $IconDebug); fontsize = 18; penwidth = 1.5; labelloc = 't'; style = 'dashed,rounded' } {
+
+ Node WanAccelServer @{Label = (Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject ($WanAccels | ForEach-Object { $_.Name.split('.')[0] }) -Align "Center" -iconType "VBR_Wan_Accel" -columnSize 3 -IconDebug $IconDebug -MultiIcon -AditionalInfo $WanAccels.AditionalInfo); shape = 'plain'; fillColor = 'transparent'; fontsize = 14; fontname = "Segoe Ui" }
+
+ }
+ }
+
# # Tapes Graphviz Cluster
$TapeServerInfo = Get-VbrTapeServersInfo
$TapeLibraryInfo = Get-VbrTapeLibraryInfo
@@ -476,7 +476,7 @@ function Get-AbrVbrDiagram {
$ServiceProviderInfo = Get-VbrServiceProviderInfo
if ($ServiceProviderInfo) {
- SubGraph ServiceProviders -Attributes @{Label = (Get-DiaHTMLLabel -ImagesObj $Images -Label "Service Providers" -IconType "VBR_Service_Providers" -SubgraphLabel -IconDebug $IconDebug); fontsize = 18; penwidth = 1.5; labelloc = 'b'; style = 'dashed,rounded' } {
+ SubGraph ServiceProviders -Attributes @{Label = (Get-DiaHTMLLabel -ImagesObj $Images -Label "Service Providers" -IconType "VBR_Service_Providers" -SubgraphLabel -IconDebug $IconDebug); fontsize = 18; penwidth = 1.5; labelloc = 't'; style = 'dashed,rounded' } {
Node ServiceProvider @{Label = (Get-DiaHTMLNodeTable -ImagesObj $Images -inputObject $ServiceProviderInfo.Name -Align "Center" -iconType "VBR_Service_Providers_Server" -columnSize 3 -IconDebug $IconDebug -MultiIcon -AditionalInfo $ServiceProviderInfo.AditionalInfo); shape = 'plain'; fillColor = 'transparent'; fontsize = 14; fontname = "Segoe Ui" }
}
@@ -531,19 +531,44 @@ function Get-AbrVbrDiagram {
Edge -From VBRProxyPointSpace -To VBRRepoPoint @{minlen = 12; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
Edge -From VBRRepoPoint -To VBRRepoPointSpace @{minlen = 16; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
- # If WanAccels add the VBRWanAccelPoint Dummy Node to the line
- if ($WanAccels) {
+ if ($TapeServerInfo -and $WanAccels -and $ServiceProviderInfo) {
Edge -From VBRRepoPointSpace -To VBRWanAccelPoint @{minlen = 12; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
-
- }
-
- if ($TapeServerInfo -and $WanAccels) {
Edge -From VBRWanAccelPoint -To VBRTapePoint @{minlen = 12; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
+ Edge -From VBRTapePoint -To VBRServiceProviderPoint @{minlen = 12; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
+ $LastPoint = 'VBRServiceProviderPoint'
- } elseif ($TapeServerInfo -and (-Not $WanAccels)) {
+ } elseif ($TapeServerInfo -and (-Not $WanAccels) -and $ServiceProviderInfo) {
+ Edge -From VBRRepoPointSpace -To VBRTapePoint @{minlen = 12; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
+ Edge -From VBRTapePoint -To VBRServiceProviderPoint @{minlen = 12; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
+ $LastPoint = 'VBRServiceProviderPoint'
+ } elseif ($TapeServerInfo -and (-Not $WanAccels) -and (-Not $ServiceProviderInfo)) {
Edge -From VBRRepoPointSpace -To VBRTapePoint @{minlen = 12; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
+ $LastPoint = 'VBRTapePoint'
+ } elseif ((-Not $TapeServerInfo) -and $WanAccels -and $ServiceProviderInfo) {
+ Edge -From VBRRepoPointSpace -To VBRWanAccelPoint @{minlen = 12; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
+ Edge -From VBRWanAccelPoint -To VBRServiceProviderPoint @{minlen = 12; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
+ $LastPoint = 'VBRServiceProviderPoint'
+ } elseif ((-Not $TapeServerInfo) -and (-Not $WanAccels) -and $ServiceProviderInfo) {
+ Edge -From VBRRepoPointSpace -To VBRServiceProviderPoint @{minlen = 12; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
+ $LastPoint = 'VBRServiceProviderPoint'
+
+ } elseif ((-Not $TapeServerInfo) -and $WanAccels -and (-Not $ServiceProviderInfo)) {
+ Edge -From VBRRepoPointSpace -To VBRWanAccelPoint @{minlen = 12; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
+ $LastPoint = 'VBRWanAccelPoint'
+ } elseif ($TapeServerInfo -and $WanAccels -and (-Not $ServiceProviderInfo)) {
+ Edge -From VBRRepoPointSpace -To VBRWanAccelPoint @{minlen = 12; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
+ Edge -From VBRWanAccelPoint -To VBRTapePoint @{minlen = 12; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
+ $LastPoint = 'VBRTapePoint'
+ } elseif ((-Not $TapeServerInfo) -and (-Not $WanAccels) -and (-Not $ServiceProviderInfo)) {
+ $LastPoint = 'VBRRepoPointSpace'
}
+ ####################################################################################
+ # #
+ # This section connect the Infrastructure component to the Dummy Points #
+ # #
+ ####################################################################################
+
# Connect Veeam Backup server to the Dummy line
Edge -From $BackupServerInfo.Name -To VBRServerPointSpace @{minlen = 2; arrowtail = 'dot'; arrowhead = 'none'; style = 'dashed' }
@@ -579,27 +604,19 @@ function Get-AbrVbrDiagram {
Edge -From VBRTapePoint -To TapeServer @{minlen = 2; arrowtail = 'none'; arrowhead = 'dot'; style = 'dashed' }
}
- if ($TapeServerInfo -and (-Not $WanAccels)) {
- Edge -From VBRTapePoint -To VBREndPointSpace @{minlen = 30; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
- }
-
- if ($WanAccels -and (-Not $TapeServerInfo)) {
- Edge -From VBRWanAccelPoint -To VBREndPointSpace @{minlen = 20; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
- }
-
- if ((-Not $TapeServerInfo) -and (-Not $WanAccels)) {
- Edge -From VBRRepoPoint -To VBREndPointSpace @{minlen = 20; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
+ # Connect Veeam ServiceProvider Infra to VBRServiceProviderPoint Dummy line
+ if ($ServiceProviderInfo) {
+ Edge -From ServiceProvider -To VBRServiceProviderPoint @{minlen = 2; arrowtail = 'dot'; arrowhead = 'none'; style = 'dashed' }
}
- if ($TapeServerInfo -and $WanAccels -and ($TapeLibraryInfo -or $TapeVaultInfo)) {
- Edge -From VBRTapePoint -To VBREndPointSpace @{minlen = 30; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
- } elseif ($TapeServerInfo -and $WanAccels -and (-Not ($TapeLibraryInfo -or $TapeVaultInfo))) {
- Edge -From VBRTapePoint -To VBREndPointSpace @{minlen = 20; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
- }
+ ####################################################################################
+ # #
+ # This section connect the Last Infrastructure component to VBREndPointSpace #
+ # #
+ ####################################################################################
- # Connect Veeam Tape Infra to VBRTapePoint Dummy line
- if ($ServiceProviderInfo) {
- Edge -From VBRServiceProviderPoint -To ServiceProviders @{minlen = 2; arrowtail = 'none'; arrowhead = 'dot'; style = 'dashed' }
+ if ($LastPoint) {
+ Edge -From $LastPoint -To VBREndPointSpace @{minlen = 30; arrowtail = 'none'; arrowhead = 'none'; style = 'filled' }
}
}
}
diff --git a/Src/Public/Invoke-AsBuiltReport.Veeam.VBR.ps1 b/Src/Public/Invoke-AsBuiltReport.Veeam.VBR.ps1
index 885ec0d..2570788 100644
--- a/Src/Public/Invoke-AsBuiltReport.Veeam.VBR.ps1
+++ b/Src/Public/Invoke-AsBuiltReport.Veeam.VBR.ps1
@@ -71,7 +71,7 @@ function Invoke-AsBuiltReport.Veeam.VBR {
#region foreach loop
foreach ($System in $Target) {
- Get-AbrVbrRequiredModule -Name 'Veeam.Backup.PowerShell' -Version '1.0'
+ Get-AbrVbrRequiredModule -Name 'Veeam.Backup.PowerShell' -Version '12'
Get-AbrVbrServerConnection
$VeeamBackupServer = ((Get-VBRServerSession).Server).ToString().ToUpper().Split(".")[0]
$script:VbrLicenses = Get-VBRInstalledLicense
From f4c8d5cdc1036df4b52d77214ac02f5097ee8dd1 Mon Sep 17 00:00:00 2001
From: Jonathan Colon
Date: Fri, 26 Jul 2024 16:42:52 -0400
Subject: [PATCH 14/14] Update Changelog
---
CHANGELOG.md | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0b9a7b7..285e856 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,15 +7,16 @@ 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.8.8] - Unreleased
+## [0.8.8] - 2024-07-26
### Added
-- Added Tape Infrastructure to the diagram
+- Add Tape Infrastructure to the diagram
- Tape Server
- - Tape Library
+ - Tape Library
- Tape Vault
-- Added Service Provider to the diagram
+- Add Service Provider to the diagram
+- Improve Infrastructure diagram error handling
## [0.8.7] - 2024-05-28