Dokumentation via AsBuiltReport

Eigentlich wollte ich AsBuiltReport.Veeam.VBR in einem Recap Artikel vorstellen, allerdings hatte ich die letzten Tage die Möglichkeit, das Paket noch mal in einer weiteren produktiven Infrastruktur einzusetzen und bin zu dem Entschluss gekommen, hier muss ein kompletter Artikel bereitgestellt werden! Denn dieses Produkt ist einfach genial!

Der Untertitel bei AsBuiltReport „Document Your Datacenter With PowerShell“ sagt eigentlich schon alles, aber seht selbst…


Vor ein paar Monaten hatte ich bereits in Recap #4 vom Veeam.Diagrammer (auch im AsBuiltReport.VBR enthalten), der ebenfalls von Jonathan Colon bereitgestellt wurde, berichtet. Mit dem Produkt AsBuiltReport hat Jonathan und Team in meinen Augen ein Meisterwerk auf den Markt gebracht.

Es gibt eine große Auswahl an Modulen, unter anderem für diverse Produkte von Veeam, VMware, Microsoft, NetApp und weitere. Schaut Euch auch unbedingt mal die anderen Lösungen an.


Auf den oben verlinkten Websites und im GitHub ist die Bereitstellung des PowerShell Moduls und der Umgang mit dem Tool detailliert beschrieben. Ich zeige trotzdem das Step-by-Step Deployment für die, durch dieses Tool, dokumentierte Infrastruktur in diesem Artikel auf.


Grundlegende Informationen zu dieser Infrastruktur:

  • Windows Server 2019
  • der Server ist kein Mitglied der produktiven Active-Directory Domain
  • PowerShell Module wurden direkt auf dem VBR installiert und auch von dort ausgeführt.
  • der Accounts muss in VBR die Rolle des Backup Administrators haben
  • entsprechender Account, der die Daten aus VBR ausliest ist als Service-Account hinterlegt (somit kein MFA aktiv).
  • die hier verwendeten Usernames, Ordner und weiteren Variablen unterscheiden sich je nach Infrastruktur.
  • Aufpassen bei Copy & Paste, vor allem im Bezug auf Anführungszeichen , und .

Ich starte in dieser Infrastruktur in einer administrativen PowerShell Session und installiere zunächst das entsprechende Modul aus der PowerShell Gallery.

Install-Module -Name AsBuiltReport.Veeam.VBR

Sofern der Server entsprechend nach extern kommunizieren darf, startet daraufhin die Installation der benötigten Pakete. Eine entsprechende Offline-Installation ist ebenfalls möglich und in der README.md beschrieben.

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

Initial starte ich mit dem oben gelisteten Befehl die Grundkonfiguration. Die hier fett markierten Einträge müssen entsprechend angepasst werden.

Daraufhin starten diverse Abfragen, die später für den Report relevant sind. Möchte man die in eckigen Klammern hinterlegten Werte beibehalten, reicht es mit der Enter Taste zu quittieren.

Ich hinterlege also in diesem Report noch Informationen zum Firmennamen, Ansprechpartner und entsprechenden Kontaktinformationen.

Ebenfalls möchte ich später die E-Mail-Funktion nutzen um mir die Reports entsprechend regelmäßig zu sammeln. Die hier abgefragten Werte entsprechen einer regulären E-Mail-Konfiguration, wie diese z.B. auch in VBR selbst eingetragen werden, sollten also kein großes Problem darstellen. Ich liste weiter unten im Artikel noch einen Auszug aus dem erzeugten JSON-File (AsBuiltReport.json).

In diesem Beispiel übernehme ich die vorgeschlagenen Ordner und bestätige diese entsprechend mit y bzw. der Eingabetaste.

Anschließend wird der erste Report entsprechend erstellt. Und der kann sich schon sehen lassen! Details weiter unten, aber folgend noch ein paar weiterführende Informationen…


Die erzeugte File AsBuiltReport.Veeam.VBR.json, listet alle Default-Optionen, die im Report erfasst werden und kann genutzt werden, um abseits vom Standart-Report (der schon sehr detailliert ist) den Detailgrad oder weitere Optionen entsprechend anzupassen.

In diesem Szenario habe ich EnableHardwareInventory von false auf true (mehr Details zur eingesetzen Hardware), EnableDiagrams von false auf true (somit sind in den Reports direkt auch die Grafiken enthalten) und ExportDiagramsFormat von png auf pdf gesetzt.


Ein Blick auf das JSON Configuration-File AsBuiltReport.json zeigt im Klartext die oben abgefragten und hinterlegten Informationen. Eine direkte Modifikation wäre auch hier möglich.


Um auch Details über den Backupserver selbst zu erhalten (Version, Datenbank, Installations-Pfade, etc.) ist es nötig, dass der WinRM Service (Windows-Remoteverwaltung) gestartet sein muss. Gemäß Best-Practices und Veeam Security & Compliance Analyzer sollte der Dienst nur aktiviert sein, wenn zwingend nötig.

Vorschlag: Den Dienst im Normalbetrieb deaktiviert lassen und nur auf Manuell setzen und nur starten, wenn benötigt. Oder alternativ, wenn der Report via Aufgabenplanung erzeugt wird, vorab via Script (oder separaten Task) entsprechend starten und anschließend wieder deaktivieren lassen.

Falls der WinRM Service (Windows-Remoteverwaltung) nicht gestartet ist, fehlen bestimmte Informationen, siehe zum Beispiel hier (links gestoppt, rechts gestartet):


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“ -EnableHealthCheck

Mit dem Aufruf des oben gelisteten Befehls und der Erweiterung um -SendEmail und -AsBuiltConfigFilePath wird entsprechend der Report erneut erzeugt, anhand den in der JSON File AsBuiltReport.json hinterlegten Informationen befüllt und via E-Mail versendet.

Wenig später landet der Report in entsprechenden Formaten, hier HTML und DOCX (auch via TXT-File wäre möglich) im Postfach des Empfängers.


Um beim Aufruf des Scripts das Kennwort des Benutzers nicht im Plain-Text zu übermitteln, können wir noch das Cmdlet Convert-To-SecureString nutzen.

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

In der entsprechenden Password.xml sieht das ganze dann in etwa so aus:


$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“ -EnableHealthCheck

Und damit das ganze entsprechend in einem geplanten Task aufgerufen werden kann, wird der obere Input entsprechend in einem PowerShell-Skript abgespeichert. Hier in diesem Beispiel unter dem Dateinamen AsBuiltReport.ps1.


Um die Reports regelmäßig zu erhalten und ggfs. Veränderungen festzuhalten, nutze ich die Möglichkeit via Aufgabenplanung das Ganze zu automatisieren.

Der Tasks lautet in dieser Umgebung AsBuiltReport.VBR und wir mit höchsten Privilegien ausgeführt.

Für diese Infrastruktur möchte ich einmal in der Woche die Reports erzeugen und anschließend via Email erhalten.

Die gesamte Aktion in der Aufgabenplanung lautet somit, Programm starten, gefolgt von „C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe“ und dem Argument -File „C:\Users\Administrator\AsBuiltReport\AsBuiltReport.ps1“.

Anschließend wird nach Eingabe von Benutzername und Kennwort, die für diese Aufgabe verwendet wird, die Aufgabe entsprechend gespeichert/erstellt.


Kommen wir endlich zum eigentlichen Report! Ich habe hier ein paar anonymisierte Screenshots eingebunden. Das ist das Ergebnis, mit dem Ihr rechnen könnt. Je nach Infrastruktur sprechen wir hier von rund 30 Seiten oder mehr, detaillierten Reports.

Alternativ ist hier Veeam Backup & Replication As Built Report ein Beispiel-Report einzusehen.

Danke Jonathan!


Und nun viel Spaß beim ausprobieren und dokumentieren!


Update (27.03.2025): Weiterführende Informationen

Enable-PSRemoting (Microsoft.PowerShell.Core) – PowerShell | Microsoft Learn
Installation and configuration for Windows Remote Management – Win32 apps | Microsoft Learn

Updatebefehl für die Module

Uninstall-Module PScriboCharts -Force
Uninstall-Module AsBuiltReport.Veeam.VBR -force
Uninstall-Module AsBuiltReport.Veeam.VB365 -force (falls auch VBO365 im Einsatz ist)
Uninstall-Module AsBuiltReport.core -force
Install-Module AsBuiltReport.core -force
Install-Module AsBuiltReport.Veeam.VBR -force
Install-Module AsBuiltReport.Veeam.VB365 -force (falls auch VBO365 im Einsatz ist)
update-Module Diagrammer.core -force
update-Module Veeam.Diagrammer -force
Import-Module Diagrammer.Core -Force
Import-Module Veeam.Diagrammer -Force

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert