Sixteen completed development rounds delivering a fully production-ready HyperVClusterPlatform. Each round represents a discrete, shippable improvement.
Operational safety and release hardening:
- Fixed CLI-vs-config mode precedence so explicit
-Modevalues win over JSON defaults - Added operation-scoped unique artifact naming for rollback, telemetry, and reporting outputs
- Surfaced rollback status/actions/errors directly in platform results
- Corrected fleet audit status semantics and isolated inline fleet temp material
- Hardened GitHub release automation with exit-checked
ghexecution and packaged release assets - Refreshed README, roadmap, changelog, and manifest release notes for the shipped version
Release alignment and CI activation:
- Moved the GitHub Actions workflow into
.github/workflows/ci.ymlso remote CI is active - Corrected hosted-runner Pester configuration and artifact publishing
- Refreshed workflow dependencies to current supported action versions
- Aligned manifest, README, and release metadata with the published patch version
Production hardening and release cleanup:
- Pinned FailoverClusters and Hyper-V command resolution to the Windows modules used by the platform
- Fixed end-to-end secret-backed config loading and redacted sensitive override logging
- Added Cloud witness support to the DSC resource
- Corrected certification witness handling and compliance report HTML encoding
- Promoted health, alert policy, and certification commands into the supported public export surface
- Added production-focused lint settings, a repository license file, and removed tracked generated test output
Core hardening and automation foundations:
- OS detection (WS2019 / WS2022 / WS2025)
- Pre-flight checks (admin, OS, features, domain, DNS)
- Per-node WinRM + feature validation
- File-based rotating logs
- Full witness support (Disk / Cloud / FileShare / None)
- Real rollback engine (snapshot-diff based)
- JSON config files with environment overrides
- Comprehensive mocked Pester test suite (5 files)
- CI: PSScriptAnalyzer lint + Pester + manifest validation
Network automation — adapter classification and Live Migration network assignment:
Private/NetworkConfig.ps1- Discover all adapters on each node via
Win32_NetworkAdapter - Classify as: Management, LiveMigration, Storage, Unclassified
- Network drift scoring (+score per role mismatch or missing adapter)
- Discover all adapters on each node via
Tests/NetworkConfig.Tests.ps1(mocked)
VM placement and preferred-owner policies:
Private/VMPlacement.ps1Get-HVVMPlacementState— reads current preferred owners from cluster groupsGet-HVVMPlacementDrift— scores drift against desired placement policy
Tests/VMPlacement.Tests.ps1
Full DSC resource implementation:
DSC/HVClusterResource/HVClusterResource.psm1— fullGet-,Test-,Set-TargetResourceGet: queries live cluster stateTest: callsGet-HVDriftScore, returns$falseif drift > 0Set: callsInvoke-HVClusterPlatform -Mode Enforce
Cluster Shared Volumes and storage automation:
Private/StorageConfig.ps1Get-HVCSVState— enumerates current CSVs with state and ownerGet-HVStorageDrift— scores drift against MinCSVCount and RequireAllOnline constraints
Tests/StorageConfig.Tests.ps1
Health monitoring and multi-channel alerting:
Private/HealthCheck.ps1Get-HVClusterHealth— node/resource/CSV/quorum health, 0–100 score
Private/Alerting.ps1Send-HVAlert— email, Teams Adaptive Card, Slack webhook, Windows Event LogInvoke-HVHealthAlertPolicy— policy-based health check + alert dispatch
Tests/HealthCheck.Tests.ps1,Tests/Alerting.Tests.ps1
Secret management integration — eliminate cleartext credentials from config files:
Private/SecretManagement.ps1Get-HVSecret— SecretManagement vault with CredentialManager fallbackConvertFrom-HVSecureString— SecureString to plaintextResolve-HVConfigSecrets— resolves*SecretNameconfig properties at load time
Tests/SecretManagement.Tests.ps1
Multi-cluster fleet orchestration:
Public/Invoke-HVClusterFleet.ps1-FleetConfigFileor-ConfigFilesparameter sets- Sequential or
-Parallel(PS 7) execution - Fleet HTML roll-up report with per-cluster drift scores
- Sequential or
Tests/Fleet.Tests.ps1
Enhanced reporting and JSON telemetry:
Private/TelemetryExport.ps1Export-HVTelemetry— structured JSON metrics file per run- Compatible with Elastic, Splunk, Azure Monitor
Private/ComplianceReport.ps1v2- Chart.js drift trend line chart (reads historical snapshots)
- Per-check detail table and executive summary section
PSGallery publish and auto-versioning CI:
Scripts/Update-ModuleVersion.ps1— bumps.psd1version from git tagsScripts/New-Release.ps1— creates GitHub release viaghCLI with auto-extracted changelog body- PSGallery publish job in
.github/workflows/ci.yml(triggered on release tag push)
Live migration orchestration:
Private/LiveMigration.ps1Get-HVMigrationReadiness— validates node state + VM migration enabled on Hyper-V hostStart-HVLiveMigration— orchestratesMove-ClusterVirtualMachineRole
Tests/LiveMigration.Tests.ps1
Disaster recovery snapshots and readiness scoring:
Private/DisasterRecovery.ps1New-HVDRSnapshot— full cluster state snapshot (nodes, quorum, CSVs, resource groups)Test-HVDRReadiness— scores readiness against MinNodeCount, quorum, and CSV requirements
Tests/DisasterRecovery.Tests.ps1
Production certification suite — 10-domain compliance gate:
Private/CertificationSuite.ps1Invoke-HVCertificationSuite— runs ClusterCore, NodeHealth, NetworkConfig, StorageConfig, WitnessConfig, SecurityBaseline, DSCCompliance, TelemetryExport, LiveMigration, DisasterRecovery- Returns
Certified(bool), per-domain results, overall score, and HTML report path
Tests/CertificationSuite.Tests.ps1- Module version: 20.0.0 — 121 tests passing, 0 failures
| Status | Meaning |
|---|---|
| ✅ RELEASED | Shipped in a tagged release |
| 🔄 IN PROGRESS | Active development |
| 📋 PLANNED | Scoped, not started |