Skip to main content

Hello,

 

As you may know I have been working for some time with several tools to document or diagram the Veeam Backup & Replica Infrastructure.

 

In the latest version of Veeam.Diagrammer the ability to generate a diagram of the infrastructure has been added.

 

Here is the link:

https://techmyth.blog/posts/veeam-diagraming-infra/

 

Greetings from the Caribbean :)

 

This is awesome Jonathan.  I have been watching and testing this project.  I will try the newest one as getting diagrams of the Veeam environment will be very beneficial for me in my role.  😎


Wow! @jcolonfzenpr this is so nice and usefull! Thank you for this. Another great tool for documentation.
I did a quick check and compared it to your video…

 

The -DiagramType 'Backup-Infrastructure' seems to not working for me, as the result will still show the last used value. For example, the result for Backup-to-Repository… every single String is working, except Backup-Infrastructure.

I will also check it on another environment, thanks again - love it :)

 

 

Update: did a check on another environment, also the string Backup-Infrastructure is only displaying the last used String…
In this environment, i have also an attached SMB Repository, two different Hardened Repositories and the listet Object Storage. But only this one Object Storage is shown. 

If i can provide you with more details to troubleshoot, just ping me. Maybe i’m the only one with this issue, but anyway, no stress - take your time. I appreciate it. 

 

 

 

Update#2:
enjoy your Ko-fi :-)

 
 

 

 


Hi,

 

What do you mean here: Update: did a check on another environment, also the string Backup-Infrastructure is only displaying the last used String…

 

Can you share the installed modules?

 

Get-Module -ListAvailable @("Veeam.Diagrammer";"Diagrammer.core") 

Example:

PS C:\Users\jocolon\> Get-Module -ListAvailable @("Veeam.Diagrammer";"Diagrammer.core") 


Directory: C:\Users\jocolon\Documents\WindowsPowerShell\Modules


ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 0.2.4 Diagrammer.Core {Convert-DiaTableToHTML, Get-DiaHtmlLabel, Get-DiaHtmlNodeTable, Get-DiaHtmlTable...}
Script 0.6.4 Veeam.Diagrammer New-VeeamDiagram


PS C:\Users\jocolon\>

Thanks for the kofi contribution :)


Seeing this issue @jcolonfzenpr when using Backup-Infrastructure diagram type.

 


Hi @Chris.Childerhose ,

The Get-VBRServerSession cmdlet is part of the veeam powershell modules.

PS C:\Users\jocolon\> Get-Command -Name Get-VBRServerSession

CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-VBRServerSession 12.2.0.334 Veeam.Backup.PowerShell


PS C:\Users\jocolon\>

Can you check if the Veeam Powershell module are installed?

Get-Module -ListAvailable Veeam*

Best regards,


Hi ,

The Get-VBRServerSession cmdlet is part of the veeam powershell modules.

PS C:\Users\jocolon\> Get-Command -Name Get-VBRServerSession

CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-VBRServerSession 12.2.0.334 Veeam.Backup.PowerShell


PS C:\Users\jocolon\>

Can you check if the Veeam Powershell module are installed?

Get-Module -ListAvailable Veeam*

Best regards,

I figured it out - I was using Powershell 7 environment which is not supported.  I changed my terminal in Windows to use PS5 and now it works.  Sorry about that.  LOL


Hi ,

The Get-VBRServerSession cmdlet is part of the veeam powershell modules.

PS C:\Users\jocolon\> Get-Command -Name Get-VBRServerSession

CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-VBRServerSession 12.2.0.334 Veeam.Backup.PowerShell


PS C:\Users\jocolon\>

Can you check if the Veeam Powershell module are installed?

Get-Module -ListAvailable Veeam*

Best regards,

I figured it out - I was using Powershell 7 environment which is not supported.  I changed my terminal in Windows to use PS5 and now it works.  Sorry about that.  LOL

I'm glad you were able to run the script. Any bugs or improvements you can recommend feel free to let me know.

I will add code to verify the Powershell version!


@jcolonfzenpr -- issue now after changing to PS5 when running.  See errors below.

Graph : You cannot call a method on a null-valued expression.
At C:\Program Files\WindowsPowerShell\Modules\Veeam.Diagrammer\0.6.4\Src\Public\New-VeeamDiagram.ps1:398 char:29
+ ... cript:Graph = Graph -Name VeeamVBR -Attributes $MainGraphAttributes {
+                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) lGraph], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull,Graph

Get-ChildItem : Cannot find path 'E:\Diagrams\Output.pdf' because it does not exist.
At C:\Program Files\WindowsPowerShell\Modules\PSGraph\2.1.38.27\PSGraph.psm1:917 char:17
+                 Get-ChildItem $PSBoundParametersC"DestinationPath"]
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (E:\Diagrams\Output.pdf:String) tGet-ChildItem], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Get-ChildItem : Cannot find path 'C:\Users\administrator.HOME\AppData\Local\Temp\8\TempOutPut.png' because it does not
exist.
At C:\Program Files\WindowsPowerShell\Modules\PSGraph\2.1.38.27\PSGraph.psm1:917 char:17
+                 Get-ChildItem $PSBoundParameters"DestinationPath"]
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\admini...\TempOutPut.png:String) Get-ChildItem], ItemNotFound
   Exception
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Export-Diagrammer : Cannot bind argument to parameter 'Path' because it is null.
At C:\Program Files\WindowsPowerShell\Modules\Veeam.Diagrammer\0.6.4\Src\Public\New-VeeamDiagram.ps1:507 char:30
+ ... utDiagram = Export-Diagrammer -GraphObj ($Graph | Select-String -Patt ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) ~Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Export-Diagrammer


It seems to be this diagram option - Backup-Infrastructure

I have tried some others and they work fine.

 
 
 

@jcolonfzenpr -- issue now after changing to PS5 when running.  See errors below.

Graph : You cannot call a method on a null-valued expression.
At C:\Program Files\WindowsPowerShell\Modules\Veeam.Diagrammer\0.6.4\Src\Public\New-VeeamDiagram.ps1:398 char:29
+ ... cript:Graph = Graph -Name VeeamVBR -Attributes $MainGraphAttributes {
+                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) lGraph], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull,Graph

Get-ChildItem : Cannot find path 'E:\Diagrams\Output.pdf' because it does not exist.
At C:\Program Files\WindowsPowerShell\Modules\PSGraph\2.1.38.27\PSGraph.psm1:917 char:17
+                 Get-ChildItem $PSBoundParametersC"DestinationPath"]
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (E:\Diagrams\Output.pdf:String) tGet-ChildItem], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Get-ChildItem : Cannot find path 'C:\Users\administrator.HOME\AppData\Local\Temp\8\TempOutPut.png' because it does not
exist.
At C:\Program Files\WindowsPowerShell\Modules\PSGraph\2.1.38.27\PSGraph.psm1:917 char:17
+                 Get-ChildItem $PSBoundParameters"DestinationPath"]
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\admini...\TempOutPut.png:String) Get-ChildItem], ItemNotFound
   Exception
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Export-Diagrammer : Cannot bind argument to parameter 'Path' because it is null.
At C:\Program Files\WindowsPowerShell\Modules\Veeam.Diagrammer\0.6.4\Src\Public\New-VeeamDiagram.ps1:507 char:30
+ ... utDiagram = Export-Diagrammer -GraphObj ($Graph | Select-String -Patt ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) ~Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Export-Diagrammer

 

I think the error is permission related, change the --OutputFolderPath to something inside your user profile path Ex : C:\Users\administrator.HOME\ and let me know.


Looking forward to testing this out @jcolonfzenpr ...after I resolve my performance issue 😁

Thanks for sharing. Will let you know if I run into any issues.


@jcolonfzenpr -- issue now after changing to PS5 when running.  See errors below.

Graph : You cannot call a method on a null-valued expression.
At C:\Program Files\WindowsPowerShell\Modules\Veeam.Diagrammer\0.6.4\Src\Public\New-VeeamDiagram.ps1:398 char:29
+ ... cript:Graph = Graph -Name VeeamVBR -Attributes $MainGraphAttributes {
+                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) lGraph], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull,Graph

Get-ChildItem : Cannot find path 'E:\Diagrams\Output.pdf' because it does not exist.
At C:\Program Files\WindowsPowerShell\Modules\PSGraph\2.1.38.27\PSGraph.psm1:917 char:17
+                 Get-ChildItem $PSBoundParametersC"DestinationPath"]
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (E:\Diagrams\Output.pdf:String) tGet-ChildItem], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Get-ChildItem : Cannot find path 'C:\Users\administrator.HOME\AppData\Local\Temp\8\TempOutPut.png' because it does not
exist.
At C:\Program Files\WindowsPowerShell\Modules\PSGraph\2.1.38.27\PSGraph.psm1:917 char:17
+                 Get-ChildItem $PSBoundParameters"DestinationPath"]
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\admini...\TempOutPut.png:String) Get-ChildItem], ItemNotFound
   Exception
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Export-Diagrammer : Cannot bind argument to parameter 'Path' because it is null.
At C:\Program Files\WindowsPowerShell\Modules\Veeam.Diagrammer\0.6.4\Src\Public\New-VeeamDiagram.ps1:507 char:30
+ ... utDiagram = Export-Diagrammer -GraphObj ($Graph | Select-String -Patt ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) ~Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Export-Diagrammer

 

I think the error is permission related, change the --OutputFolderPath to something inside your user profile path Ex : C:\Users\administrator.HOME\ and let me know.

Sounds good.  I will report back.

Also how do you use the -Filename parameter to specify a filename?  Do you have an example?  I tried to use it but probably not doing it right.  LOL


@jcolonfzenpr -- issue now after changing to PS5 when running.  See errors below.

Graph : You cannot call a method on a null-valued expression.
At C:\Program Files\WindowsPowerShell\Modules\Veeam.Diagrammer\0.6.4\Src\Public\New-VeeamDiagram.ps1:398 char:29
+ ... cript:Graph = Graph -Name VeeamVBR -Attributes $MainGraphAttributes {
+                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) lGraph], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull,Graph

Get-ChildItem : Cannot find path 'E:\Diagrams\Output.pdf' because it does not exist.
At C:\Program Files\WindowsPowerShell\Modules\PSGraph\2.1.38.27\PSGraph.psm1:917 char:17
+                 Get-ChildItem $PSBoundParametersC"DestinationPath"]
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (E:\Diagrams\Output.pdf:String) tGet-ChildItem], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Get-ChildItem : Cannot find path 'C:\Users\administrator.HOME\AppData\Local\Temp\8\TempOutPut.png' because it does not
exist.
At C:\Program Files\WindowsPowerShell\Modules\PSGraph\2.1.38.27\PSGraph.psm1:917 char:17
+                 Get-ChildItem $PSBoundParameters"DestinationPath"]
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\admini...\TempOutPut.png:String) Get-ChildItem], ItemNotFound
   Exception
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Export-Diagrammer : Cannot bind argument to parameter 'Path' because it is null.
At C:\Program Files\WindowsPowerShell\Modules\Veeam.Diagrammer\0.6.4\Src\Public\New-VeeamDiagram.ps1:507 char:30
+ ... utDiagram = Export-Diagrammer -GraphObj ($Graph | Select-String -Patt ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) ~Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Export-Diagrammer

 

I think the error is permission related, change the --OutputFolderPath to something inside your user profile path Ex : C:\Users\administrator.HOME\ and let me know.

Sounds good.  I will report back.

Also how do you use the -Filename parameter to specify a filename?  Do you have an example?  I tried to use it but probably not doing it right.  LOL

This is the way it is used, if you have any error let me know

 


Hi,

 

What do you mean here: Update: did a check on another environment, also the string Backup-Infrastructure is only displaying the last used String…

 

Can you share the installed modules?

 

Get-Module -ListAvailable @("Veeam.Diagrammer";"Diagrammer.core") 

Example:

PS C:\Users\jocolon\> Get-Module -ListAvailable @("Veeam.Diagrammer";"Diagrammer.core") 


Directory: C:\Users\jocolon\Documents\WindowsPowerShell\Modules


ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 0.2.4 Diagrammer.Core {Convert-DiaTableToHTML, Get-DiaHtmlLabel, Get-DiaHtmlNodeTable, Get-DiaHtmlTable...}
Script 0.6.4 Veeam.Diagrammer New-VeeamDiagram


PS C:\Users\jocolon\>

Thanks for the kofi contribution :)

I mean, for example, when used backup-to-sobr as diagramtype, it’s working… when then use backup-infrastructure as diagramtype, the result will in my case be the same result as used before (so on this example, backup-to-sobr). 
i had also checked if I’m running on version 5, which is on both environments the case.

 

But as seen by Chris, I think he is running in the same behavior reagarding the backup-infrastructure diagramtype  

 

Can’t currently provide more information, as I’m sitting with mobile next to my sleeping toddler 😅


If any of you could send me the log I could identify where the bug is.

To do this it is required to run the script with the debug option turned on in powershell using the following commands:

Enable powershell debugging:

$global:VerbosePreference = 'Continue'
$global:DebugPreference = 'Continue'
Start-Transcript -Path .\Output.log
New-VeeamDiagram -Target <-- change this part -->
Stop-Transcript

The commands generate the Output.log file which you can send to me at:

jcolonf@zenprsolutions.com

After saving the log, reset powershell to default settings:

$global:VerbosePreference = 'SilentlyContinue'
$global:DebugPreference = 'SilentlyContinue'

 


@jcolonfzenpr -- sent you the log output from my homelab VBK server.  Hopefully it helps fix the issue.


@jcolonfzenpr let me know if you also need a second log, wouldn’t be a problem 😊


@jcolonfzenpr let me know if you also need a second log, wouldn’t be a problem 😊

If you can send me the log it would be a great help.


Hi Jonathan, reports have been sent to you by mail 😉


In this environment, i have also an attached SMB Repository, two different Hardened Repositories and the listet Object Storage. But only this one Object Storage is shown. 

If i can provide you with more details to troubleshoot, just ping me. Maybe i’m the only one with this issue, but anyway, no stress - take your time. I appreciate it. 

 

 

 

Can you show me the output of this cmdlet?

Get-VBRBackupRepository | Select-Object -Property Type

 


Any news on the Backup-Infrastructure report type and were the logs sent helpful?  Just checking as the other reports are working well and are fantastic! 😎


In this environment, i have also an attached SMB Repository, two different Hardened Repositories and the listet Object Storage. But only this one Object Storage is shown. 

If i can provide you with more details to troubleshoot, just ping me. Maybe i’m the only one with this issue, but anyway, no stress - take your time. I appreciate it. 

 

 

 

Can you show me the output of this cmdlet?

Get-VBRBackupRepository | Select-Object -Property Type

 

yes for sure:



PS C:\Users\Administrator> Get-VBRBackupRepository | Select-Object -Property Type

         Type
         ----
          Nfs
LinuxHardened
     WasabiS3
LinuxHardened

 

And sorry, it was not a SMB share, it was NFS :-)


Any news on the Backup-Infrastructure report type and were the logs sent helpful?  Just checking as the other reports are working well and are fantastic! 😎

I think I've fixed it, I hope to release a new version soon for you to test. :)


In this environment, i have also an attached SMB Repository, two different Hardened Repositories and the listet Object Storage. But only this one Object Storage is shown. 

If i can provide you with more details to troubleshoot, just ping me. Maybe i’m the only one with this issue, but anyway, no stress - take your time. I appreciate it. 

 

 

 

Can you show me the output of this cmdlet?

Get-VBRBackupRepository | Select-Object -Property Type

 

yes for sure:



PS C:\Users\Administrator> Get-VBRBackupRepository | Select-Object -Property Type

         Type
         ----
          Nfs
LinuxHardened
     WasabiS3
LinuxHardened

 

And sorry, it was not a SMB share, it was NFS :-)

It’s Nfs and not NfsShare! Thanks

Fixed!


Any news on the Backup-Infrastructure report type and were the logs sent helpful?  Just checking as the other reports are working well and are fantastic! 😎

I think I've fixed it, I hope to release a new version soon for you to test. :)

Great!  Looking forward to the fix and will test it when ready.

 
 
 

Comment