Hi Guys,
I have already started on this for my own use, but just saw the note on the website reposting before working on this so wanted to post early.
I am happy to do the heavy lifting on this, but looking to make a Veeam Backup for Azure As Built Module that utilizes the APIs on VBA to gather required info/data.
The plan was to keep the format, structure etc very similar to the Veeam VBR and VB365 modules created by @rebelinux.
I would love to share once closer to being done or done if you guys are willing to accept it.
Thanks,
Richard
All reactions
-
👍 2 -
🚀 1
Replies: 1 comment 14 replies
Hi Richard,
It's great to hear that you are wanting to contribute to AsBuiltReport. Be sure to have a look at the recently updated guide for creating a report module.
If you have any questions, be sure to reach out to myself or Jonathan.
Cheers,
Tim
All reactions
-
👍 1
|
Hi @acgdickie, Your submission as well as others has highlighted that there were gaps in the Developer Guidelines which needed to be addressed. I have worked on updating those in the past week to provide more information on how report modules should be structured. Documentation for the I am also working on a Claude skill to help contributors build modules which align to the guidelines. Part of this is work is to provide a code review and compliance report. It would typically generate the report in Word however I have converted it to Markdown below for you. The main issue with the report module is in the structure of the private functions. Please review the report below, as well as the updated Developer Guide to refactor your functions in alignment with these guidelines. Code Review & Compliance ReportAsBuiltReport.Veeam.VBAZModule version 0.1.0 · 10 June 2026
Assessed against AsBuiltReport module framework guidelines 1. OverviewThis report presents the results of a code compliance review of the AsBuiltReport.Veeam.VBAZ module (v0.1.0) against the AsBuiltReport framework guidelines. 20 checks were assessed: 14 pass, 5 warnings, and 1 fail. The single FAIL concerns the module's use of generic rendering helpers. All private report functions delegate table construction and rendering to Five WARNING findings are also identified. Two relate to the module manifest: 2. Findings Summary
3. Detailed Findings3.1 Code StyleGeneric rendering helpers hide table shape and output logic [FAIL]
.LINK in function help blocks points to personal fork [WARNING]
Chart rendered after table — should precede related table [WARNING]
ShowTableCaptions suppressed for List tables in Add-AbrVbazTable [WARNING]
3.2 Manifest PSData URIsIconUri points to personal GitHub avatar [WARNING]
ProjectUri, LicenseUri, and ReleaseNotes point to personal fork [WARNING]
4. Passing ChecksThe following areas are fully compliant with AsBuiltReport guidelines and require no action. ✓ CODE_OF_CONDUCT.md now present (resolved from prior review) Confirmed present at repository root alongside README.md and CHANGELOG.md. This was the Documentation WARNING from the 5 June 2026 review — now resolved. ✓ Module subdirectory layout correct All module files (psd1, psm1, json, Language/, Src/) reside inside AsBuiltReport.Veeam.VBAZ/ at the repository root, correctly matching the Plaster-scaffolded layout. ✓ .github/ present with full CI scaffold .github/ confirmed with a PR template, bug report and change request issue templates, PSScriptAnalyzer.yml workflow, and PSScriptAnalyzerSettings.psd1. ✓ Tests/ present with comprehensive Pester suite The test suite covers manifest validation, module import, source file parse integrity, per-resource function layout, JSON config sample validation, localization data completeness, and PSScriptAnalyzer compliance. ✓ Samples/ present with three JSON configurations Level1.json, Level2.json, and Level3.json are all present, well-structured, and document all Options, InfoLevel, and HealthCheck keys with inline _comment_ fields. ✓ Manifest required fields, CompatiblePSEditions, and Copyright correct All required fields present. CompatiblePSEditions = @('Desktop', 'Core') correct. Copyright uses 'AsBuiltReport Community'. RequiredModules correctly declares AsBuiltReport.Core v1.6.4, AsBuiltReport.Chart v0.3.2, and AsBuiltReport.Diagram v1.0.7. ✓ PSM1 uses Join-Path — cross-platform path construction correct The module loader uses Join-Path consistently. PowerShell normalises the backslash-delimited child paths cross-platform; no hardcoded OS-specific separator issues observed. ✓ Main function has [CmdletBinding()] and correct parameter validation Invoke-AsBuiltReport.Veeam.VBAZ has [CmdletBinding()], [Parameter(Mandatory)], [ValidateNotNullOrEmpty()], and typed parameters. Credential is correctly optional to support offline capture mode. ✓ Private functions follow Get-AbrVbaz* naming convention All data-collection and section-orchestration private functions use the Get-AbrVbaz prefix. The naming convention is correct — the failure is the delegation pattern, not the names. ✓ $reportTranslate correctly wired throughout The main function and all sampled private functions resolve their own translation group. No hardcoded English section headings observed. ✓ Error handling with try/catch/finally correct in main appliance loop The main appliance foreach loop is wrapped in try/catch/finally. Non-fatal errors use Write-PScriboMessage -IsWarning. The finally block correctly calls Disconnect-AbrVbazApi. ✓ CHANGELOG, CONTRIBUTING.md, and README all correct CHANGELOG follows Keep a Changelog format. CONTRIBUTING.md is VBAZ-specific throughout. README leads with Install-Module, includes usage examples, offline capture documentation, Options reference, InfoLevel matrix, HealthCheck reference, and Section Matrix. ✓ Language file correctly structured and wired Language/en-US/VeeamVBAZ.psd1 uses a grouped hashtable structure keyed by function name. $reportTranslate is consumed consistently. The Pester suite validates all referenced groups exist in the language file. ✓ Offline capture mode correctly implemented Options.CapturePath is correctly checked before attempting API authentication. Import-AbrVbazCaptureInventory correctly handles both folder and ZIP sources. 5. Recommended Action PriorityAddress findings in the following order before submitting a pull request to the AsBuiltReport organisation.
|
All reactions
Ah cool, sorry missed that. I will have a read and investigate them this weekend.
Thanks @tpcarman
All reactions
-
👍 2 -
❤️ 1
Ok, sorry for the delay guys, Updated and uploaded the fixes this morning. SO ready for you to review again.
All reactions
Hey Richard,
I've had a look through this and I need to flag some issues before this goes any further. The brief was readability over brevity and self-contained functions. A reviewer and/or contributor needs to be able to read the code and understand what it's doing without jumping elsewhere. The code should be self-explanatory, not something someone should have to reverse-engineer. What I see here is a lot more code, causing a lot more confusion. This code is now harder to read than before. Honestly this doesn't look like something you've had a hand in, or have properly reviewed or tested before sharing. It has clearly been generated with an AI tool.
I've just published the AI Use Policy and think it would be worth a read. The short version is you need to be able to explain whatever you submit.
I suggest going back to your original submission and working through it by hand, by removing the wrapper functions and building each table yourself so you get familiar with the pattern. Utilise AI where you get stuck, but don't hand it the whole module to build in one pass. Start by building it yourself, one function at a time.
Use the documentation for reference, but reach out to @rebelinux or myself if you need further guidance.
Tim
All reactions
-
👍 1
Yeah sorry I did ask claude to make the changes you ask before, I will look back at it again from what we had before.
All reactions
-
👍 1