Skip to main content

Documentation by AsBuiltReport


Dynamic
Forum|alt.badge.img+9

I actually wanted to present AsBuiltReport.Veeam.VBR in a recap article on my blog, but in the last few days I had the opportunity to use the package again in another productive infrastructure and came to the decision that a complete article must be provided here! Because this product is simply awesome!

 

The subtitle on AsBuiltReport "Document Your Datacenter With PowerShell" says it all, but see for yourself…

 

A few months ago I reported on the Veeam.Diagrammer (also included in the AsBuiltReport.VBR) in my Recap #4, which was also provided by Jonathan Colon. In my opinion, Jonathan and his team have brought a masterpiece onto the market with the AsBuiltReport product.

There is a large selection of modules, including for various products from Veeam, VMware, Microsoft, NetApp and others. Be sure to check out the other solutions too.

 

The provision of the PowerShell module and how to use the tool are described in detail on the websites linked above and in GitHub. I will still show the step-by-step deployment for the infrastructure documented by this tool in this article.

 


 

 

Configuration

Basic information about this infrastructure:

  • Windows Server 2019
  • The server is not a member of the productive Active Directory domain
  • PowerShell modules were installed directly on the VBR and executed from there.
  • The account must have the role of backup administrator in VBR
  • The corresponding account that reads the data from VBR is stored as a service account (so no MFA is active).
  • The usernames, folders and other variables used here differ depending on the infrastructure.

 

 

In this infrastructure I start in an administrative PowerShell session and first install the corresponding module from the PowerShell Gallery.

Install-Module -Name AsBuiltReport.Veeam.VBR

 


If the server is allowed to communicate externally, then the installation of the required packages starts. A corresponding offline installation is also possible and is described in the README.md.

 

 

New-AsBuiltReport -Report Veeam.VBR -Target localhost -Username 'XYZmonitoring' -Password 'XYZ' -Format Html,Word -OutputFolderPath 'C:\Users\Administrator\Desktop' -Timestamp

Initially I start the basic configuration with the command listed above. The entries marked in bold here must be adjusted accordingly.

 

 

Then some various queries start that are later relevant for the report. If you want to keep the values stored in [square] brackets, just press the Enter key to confirm.

 

 

 

So, in this report I also store information about the company name, contact person and corresponding contact information.

 

 

 

I would also like to use the email function later to collect the reports regularly. The values ​​requested here correspond to a regular email configuration, such as those entered in VBR itself, so they shouldn't pose a big problem. Further down in the article, I’ll list an excerpt from the generated JSON file (AsBuiltReport.json).

 

 

 


In this example, I accept the suggested folders and confirm them accordingly with y or the Enter key.

 

The first report is then created accordingly.
And it's quite impressive! Details below, but first… some further information follows... be patient 😊

 

 


 

 

 

AsBuiltReport.Veeam.VBR.json

 

The generated file AsBuiltReport.Veeam.VBR.json lists all the default options that are recorded in the report and can be used to adjust the level of detail or other options accordingly apart from the standard report (which is already very detailed).

 

 

In this scenario, I set EnableHardwareInventory from false to true (more details about the hardware used), EnableDiagrams from false to true (so the Diagrams are also included in the reports) and ExportDiagramsFormat from png to pdf.

 

 


 

 

 

AsBuiltReport.json

 

A look at the JSON configuration file AsBuiltReport.json shows the information queried and stored above in plain text. A direct modification would also be possible here.

 

 

 


 

 

Service WinRM / Windows Remote Management

 

To obtain details about the backup server itself (version, database, installation paths, etc.), it is necessary that the WinRM service (Windows Remote management) has been started. According to best practices and Veeam Security & Compliance Analyzer, the service should only be activated when necessary.

 

Suggestion: Leave the service deactivated in normal operation and only set it to manual and only start it when needed. Or alternatively, if the report is generated automatically via task planning, start it in advance using a script and then deactivate it again.

 

 


If the WinRM Service (Windows Remote Management) is not started, certain information is missing, see for example here (stopped on the left, started on the right):

 

 

 


 

 

 

Report by Mail

 

 

New-AsBuiltReport -Report Veeam.VBR -Target localhost -Username 'XYZmonitoring' -Password 'XYZ' -Format Html,Word -OutputFolderPath 'C:\Users\Administrator\Desktop' -Timestamp -SendEmail -AsBuiltConfigFilePath 'C:\Users\Administrator\AsBuiltReport\AsBuiltReport.json'

 

By calling the command listed above and extending it with -SendEmail and -AsBuiltConfigFilePath, the report is generated again, filled using the information stored in the JSON-file AsBuiltReport.json and sent via email.

 


A little later, the report arrives in the recipient's mailbox in the appropriate formats, here HTML and DOCX (via TXT file would also be possible).

 

 


 

 

SecureString / encrypted string for password

 

In order not to transmit the user's password in plain text when the script is called, we can also use the Convert-To-SecureString cmdlet.

 

 

$securePassword = ConvertTo-SecureString "yourpassword" -AsPlainText -Force $securePassword | Export-Clixml -Path "C:\Users\Administrator\AsBuiltReport\Password.xml"

 

In the corresponding Password.xml the whole thing looks something like this:

 

 


 


 

 

 

AsBuiltReport.ps1

 

$securePassword = Import-Clixml -Path "C:\Users\Administrator\AsBuiltReport\Password.xml"

 

$credential = New-Object System.Management.Automation.PSCredential("USERNAME", $securePassword)

 

New-AsBuiltReport -Report Veeam.VBR -Target localhost -Username $credential.UserName -Password $credential.GetNetworkCredential().Password -Format Html,Word,Text -OutputFolderPath 'C:\Users\Administrator\Desktop\AsBuiltReport.VBR' -ReportConfigFilePath 'C:\Users\Administrator\AsBuiltReport\AsBuiltReport.Veeam.VBR.json' -Timestamp -SendEmail -AsBuiltConfigFilePath 'C:\Users\Administrator\AsBuiltReport\AsBuiltReport.json'

 

And that the whole thing can be called in a planned task, the upper input is saved in a PowerShell script. Here in this example under the file name AsBuiltReport.ps1.

 


 

 


 

 

 

Task Scheduler

 


To receive the reports regularly and to record any changes, I use the option of automating the whole thing via task planning.

 

 


In this environment, the task is called AsBuiltReport.VBR and is executed with the highest privileges.

 


I would like to generate the reports for this infrastructure once a week and then receive them via email.

 

 

The entire action in the task scheduler is, start the program, followed by "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" and the argument -File "C:\Users\Administrator\AsBuiltReport\AsBuiltReport.ps1".

 


Then, after entering the username and password used for this task, the task will be saved/created accordingly.

 

 


 

 

 

Report

Let's finally get to the actual report! I have included a few anonymized screenshots here. This is the result you can expect. Depending on the infrastructure, we are talking about 30 pages or more detailed reports.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Alternatively, you can view a sample report here Veeam Backup & Replication As Built Report

 

Thanks Jonathan ​@jcolonfzenpr for making this happen! 

Best, Markus

 

5 comments

Chris.Childerhose
Forum|alt.badge.img+21

This is such an amazing tool.  Thanks for this write-up.


coolsport00
Forum|alt.badge.img+20
  • Veeam Legend
  • 4133 comments
  • March 18, 2025

Fantastic writeup of this Markus. Those diagrams in the report are 🔥💥

Appreciate you sharing!


Tommy O'Shea
Forum|alt.badge.img+3
  • Experienced User
  • 85 comments
  • March 19, 2025

Those reports look awesome. Great article! 


lukas.k
Forum|alt.badge.img+10
  • Veeam Vanguard
  • 198 comments
  • March 22, 2025

Markus - as always, fantastic writeup!

I see the following use case immediately: We perform regular health checks for our SLA customers on a monthly basis and with this we can save lots of time, manual work and we can have standardization for every customer to make life easer.

Nice work!!


Dynamic
Forum|alt.badge.img+9
  • Author
  • Veeam Vanguard
  • 370 comments
  • March 22, 2025

Thanks Lukas, but Kudos as well to ​@jcolonfzenpr and team who bring us this amazing toolkit. 
 

edit: also for sure, thanks all for the feedback so far 😅