Conversation
## [2.0.0] - Unreleased ### Added - Modular architecture: each report section is now a dedicated private function (`Get-AbrVSphere*`) - Internationalization (i18n) support via `Language/` `.psd1` files (`en-US`, `en-GB`, `es-ES`, `fr-FR`, `de-DE`) - Pester test suite (`AsBuiltReport.VMware.vSphere.Tests.ps1`, `LocalizationData.Tests.ps1`, `Invoke-Tests.ps1`) - GitHub Actions Pester workflow (`.github/workflows/Pester.yml`) ### Changed - Complete module rewrite for improved maintainability and extensibility - Module source now uses nested folder structure (`AsBuiltReport.VMware.vSphere/`) - Requires `AsBuiltReport.Core` >= 1.6.2 - `CompatiblePSEditions` now explicitly declares `Desktop` and `Core` support
Added permissions for contents, issues, pull-requests, and id-token.
Convert VMware managed objects stored as PSCustomObject property values to plain strings (.Name or [string] cast) before passing to PScribo's Table cmdlet, preventing .NET's Dictionary<K,V>.Add() from throwing a duplicate-key exception when formatting TEXT output. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…123) - Guard against null LicenseAssignmentManager MoRef (Bug B) to prevent 'Index operation failed; the array index evaluated to null' crash - Replace broken reflection-based QueryAssignedLicenses call with direct method call and fix $_ out-of-scope bug in vCenter license path (Bug A) - Guard null/empty LicenseKey before masking in both VMHost and vCenter paths to avoid errors when no license is assigned (Bug C) - Wrap Get-License calls in try/catch in Get-AbrVSphereVMHostHardware and Get-AbrVSpherevCenter to prevent fatal propagation (Bug D) - Add LicenseError locale key to all five language files Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds a new NOTOCHeading5 subsection under each host's Hardware section displaying VID, DID, SVID, and SSID in lowercase hex for HCL validation. Uses PCI address mapping via Get-VMHostNetworkAdapter/Get-VMHostHba instead of VMkernelName (unpopulated on ESXi 8). Guards null PCI keys to handle software HBAs (iSCSI, software NVMe) without physical PCI addresses. Adds 7 new localisation keys to all 5 locale files (en-US, en-GB, es-ES, fr-FR, de-DE). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Guard Get-VsanDisk against a null VsanDiskGroup parameter, which occurs when an OSA cluster has no claimed disks. The cluster detail table now renders correctly; Disk Groups and Disks subsections are skipped when no disk groups exist. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace vpxd.certmgmt.certs.cn.* advanced settings reads with a direct TLS connection to port 443, returning the actual deployed certificate. Use SslStream with an explicit-parameter RemoteCertificateValidationCallback for reliable PS 5.1 and 7.x compatibility. Certificate status (VALID / EXPIRING_SOON / EXPIRING / EXPIRED) is computed from NotAfter vs the existing soft/hard threshold advanced settings. Fields removed: Country, Email, Locality, State, Organization, OrganizationUnit, Validity (VMCA template settings — not the live cert). Fields added: Subject, Issuer, ValidFrom, ValidTo, Thumbprint, CertStatus. All five locale files (en-US, en-GB, es-ES, fr-FR, de-DE) updated. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- CompatiblePSEditions: Core only (Desktop removed) - PowerShellVersion minimum set to 7.4 per VMware PowerCLI requirement - PSEdition_Desktop tag removed from manifest - Pester: replace separate Desktop/Core assertions with a single 'Core only' check that also asserts Desktop is absent - README: add Broadcom PowerCLI Installation Guide link and PS 7.4 minimum requirement note - CHANGELOG: document as Changed (min version) and Removed (PS 5.1) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Move from .github/workflows/Dependabot.yml to .github/dependabot.yml. GitHub was parsing it as an Actions workflow (requiring on:/jobs:) instead of a Dependabot configuration file. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add ESXi Host TPM & Encryption section to Get-AbrVSphereVMHostSecurity - Reports TPM attestation status via ExtensionData.Config.TpmAttestation - Reports encryption mode, RequireSecureBoot, and RequireSignedVIBs via esxcli - Recovery keys sub-table gated behind ShowEncryptionKeys option (InfoLevel >= 3) - TpmAttestation healthcheck warns when TPM present but not attested - Add ShowEncryptionKeys option (default: false) to report JSON config - Add TpmAttestation healthcheck (default: true) to report JSON config - Add i18n keys to all 5 locale files (en-US, en-GB, es-ES, fr-FR, de-DE) - Update README.md options and healthcheck tables Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sub-functions (ClusterHA, ClusterProactiveHA, ClusterDRS, VMHostHardware, VMHostSystem, VMHostStorage, VMHostNetwork, VMHostSecurity) all share their parent's InfoLevel setting (Cluster or VMHost) rather than having their own dedicated JSON config key. Emitting "VMHost Network InfoLevel set to 3" implied a separate configurable setting that doesn't exist. InfoLevel messages are retained only in the 10 top-level functions that correspond directly to InfoLevel keys in the report JSON config. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
On ESXi 8.x, VMkernelName is no longer populated in the output of esxcli hardware.pci.list, causing the Where-Object filter in Get-PciDeviceDetail to return no devices and the section to be silently suppressed. Fix by adding an optional -VMHost parameter and building a PCI address to VMkernel name lookup map via the PowerCLI API (same pattern already used by the PCI Devices and I/O Device Identifiers sections). The VMkernelName field is used directly when present (ESXi < 8), with the address map as fallback (ESXi 8+). Also fix a secondary bug where $firmwareVersion and $driverVib were not reset between loop iterations, causing values from a previous device to bleed into the next device's output. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…IOC, VM Swap Location, and DSCluster SDRS improvements - Add Tags reporting to VMHost, Datastore, DSCluster, ResourcePool, Network (VDS), and VM sections - Add ESXi Host Certificate section (subject, issuer, validity dates, SHA-256 thumbprint) - Add VM Swap File Location section using Get-View with camelCase property paths - Expand Syslog section to include log directory, rotation count, and log size via esxcli - Add vSAN Services section (Performance, File, iSCSI, Deduplication, Encryption, Health) for both OSA and ESA code paths - Add VDS LACP section using ExtensionData instead of unavailable Get-VDLacpPolicy cmdlet - Add VDS NetFlow section and NIOC Resource Pools section - Fix NIOC pool limit integer comparison (was string '-1', now integer -1) - Add Cluster LCM and Cluster VUM as separate sub-section functions - Fix DSCluster SDRS rules, space/IO load balance config reporting - Update all 5 locale files (en-US, en-GB, es-ES, fr-FR, de-DE) with new keys Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Backup Schedule table shows status (Activated/Deactivated), recurrence with appliance timezone, backup location, data components (mapped from API part names to human-readable labels), and retention count - Backup Job History table shows 10 most recent jobs via GET /api/appliance/recovery/backup/job/details; columns: location, type, status, data transferred, duration (HH:MM:SS), end time - Healthcheck: Warning if schedule deactivated, Critical if job failed - Requires vSphere 7.0+ REST API; renders informational paragraph on older versions - Add Backup healthcheck key to AsBuiltReport.VMware.vSphere.json - Update all 5 locale files with new backup keys Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…to vCenter report - Add vCenter Server Backup Settings section (InfoLevel 3+) with Backup Schedule and Backup Job History subsections via REST API - Add Certificate healthcheck (Critical: EXPIRED/EXPIRING, Warning: EXPIRING_SOON) - Add Backup healthcheck (Warning: schedule deactivated, Critical: job failed) - Update report JSON with Certificate and Backup healthcheck defaults - Update README vCenter healthcheck table with Certificate and Backup rows - Update CHANGELOG with Certificate healthcheck entry - Add pre-release support to Release.yml (manifest Prerelease string, conditional tweet/bsky jobs) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…howTags options - Add vCenter resource/inventory summary tables at InfoLevel 1+ (#30) - Add Content Libraries section to vCenter report (InfoLevel 3+) - Add ShowRoles, ShowAlarms (#122), and ShowTags options - Gate tag reporting across all sections with ShowTags option - Use Convert-DataSize for memory/storage and library item sizes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Change dorny/test-reporter from java-junit to dotnet-nunit to match the NUnitXml format generated by Invoke-Tests.ps1 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
dorny/test-reporter@v1 only supports java-junit (JUnit XML) format; switch Invoke-Tests.ps1 output from NUnitXml to JUnitXml to match Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add matrix strategy across windows-latest, ubuntu-latest, macos-latest - Replace dorny/test-reporter with actions/upload-artifact (avoids XML format parsing issues; test results stored as downloadable artifacts) - Add Codecov code coverage upload (Windows only) - Add workflow_dispatch for manual runs - Revert output format to NUnitXml (JUnitXml change reverted) - Split module installs into separate named steps - Always use pwsh shell (PS5.1 not supported by this module) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bumps [zentered/bluesky-post-action](https://github.com/zentered/bluesky-post-action) from 0.2.0 to 0.4.0. - [Release notes](https://github.com/zentered/bluesky-post-action/releases) - [Commits](zentered/bluesky-post-action@v0.2.0...v0.4.0) --- updated-dependencies: - dependency-name: zentered/bluesky-post-action dependency-version: 0.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](actions/upload-artifact@v4...v7) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/stale](https://github.com/actions/stale) from 9 to 10. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](actions/stale@v9...v10) --- updated-dependencies: - dependency-name: actions/stale dependency-version: '10' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v4...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
…actions/checkout-6 ci(deps): bump actions/checkout from 4 to 6
…actions/stale-10 ci(deps): bump actions/stale from 9 to 10
…actions/upload-artifact-7 ci(deps): bump actions/upload-artifact from 4 to 7
…zentered/bluesky-post-action-0.4.0 ci(deps): bump zentered/bluesky-post-action from 0.2.0 to 0.4.0
IconUri was a relative path ('AsBuiltReport.png') which nuget.exe
rejects with 'Invalid URI' during Publish-Module; changed to a fully
qualified raw GitHub URL. Also fix LicenseUri and ReleaseNotes from
/main/ to /master/ to match the repo's default branch.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Prerelease should be blank in source; the Release workflow injects it dynamically from the tag name only for pre-release GitHub releases. Having it hardcoded would cause stable releases to publish as pre-release. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add Filter.Cluster config option (default ["*"] = all clusters) - Support plain cluster name or datacenter-qualified "DC/Cluster" format - Scope VMHosts, VMs, Datastores, ResourcePools, vSAN, DSClusters, and VDS to filtered clusters in the entry point; section functions consume pre-filtered parent-scope collections - Fix Get-VsanSpaceUsage to use cluster object rather than name string to avoid resolving to the wrong cluster in multi-datacenter environments - Add CollectingClusters and ClusterNotFound locale keys to all 5 locales - Update CHANGELOG and README Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5 to 6. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](codecov/codecov-action@v5...v6) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
…ed data block - Replace VM summary sub-section with Infrastructure sub-section (Datacenter, Cluster, Distributed Switch, Datastore counts); VM summary moved after Hosts - Move VDS cluster-filter logic from Get-AbrVSphereNetwork into the central collection block in Invoke- so $VDSwitches is available to all section functions - Add Infrastructure localization keys to all 5 locale files - Fix IconUri to use v2.0.0 tag path (nested folder structure; master branch 404s) - Reformat AsBuiltReport.VMware.vSphere.json (whitespace only) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…codecov/codecov-action-6 ci(deps): bump codecov/codecov-action from 5 to 6
Add Infrastructure summary table to vCenter Server section
- Update GitHub release workflow to remove X/Twitter tweet action due to their new pay per usage API - Update CHANGELOG.md
|
PSScriptAnalyzer results: Errors: [0], Warnings: [55], Information: [1]
|
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This is a major version release representing a complete module rewrite with a modular architecture, internationalization support, numerous new report sections, and several bug fixes.
Related Issue
Filter.Clusterconfiguration optionShowRolesandShowAlarmsoptionsMotivation and Context
v2.0.0 is a ground-up rewrite of the module designed to improve long-term maintainability, fix a number of long-standing bugs across vSphere 7 and 8 environments, and significantly expand report coverage with new sections that have been frequently requested by the community.
How Has This Been Tested?
AsBuiltReport.VMware.vSphere.Tests.ps1,LocalizationData.Tests.ps1) executed viaInvoke-Tests.ps1Screenshots (if appropriate):
N/A
Types of changes
Checklist: