Fixes Restore-HardeningBackup having no error handling across its restore loop: a single control throwing during a real rollback previously aborted every remaining control silently, with no indication of what did or didn't make it back -- the same class of gap PR #10/#11 fixed on the apply-side backup-snapshot loop, now applied to the restore loop itself. Restore-HardeningControlState returns an explicit Restored/Skipped outcome for every control instead of a bare return, and Restore-HardeningBackup wraps each control's restore in try/catch, building a per-control Id/Title/Status/Message result instead of running as a void loop. Restore-Windows11Hardening's report now includes that full Results array plus EndpointProtectionBefore/EndpointProtectionAfter, and derives RestoredControl from the actual count of restored controls instead of the raw backup file's entry count. Found during this project's first live, non-mocked, end-to-end apply-then-restore validation against a real 131-control Conference profile run on a disposable VM, which is also the first time Restore-Windows11Hardening has been exercised against real state changes rather than only unit-tested with mocks.
Full quality gate passed for this tag: unit, functional, integration, Windows PowerShell 5.1 compatibility, static analysis, and code coverage at or above the enforced 99.5% floor. This validates the release build only; the destructive disposable-VM system suite and physical-hardware checks in docs/Testing.md must still be rehearsed separately before deploying to a travel laptop.
What's Changed
- fix: make restore resilient to per-control failures and report results by @scweeks in #17
- chore: bump ModuleVersion to 1.2.5 and update release notes for #17 by @scweeks in #18
Full Changelog: v1.2.4...v1.2.5