- Admin check uses -not (IsAdmin); the old call passed -eq $false as arguments.
- Named instances: WQL filter Name='MSSQL$DEV' unescaped, lookup errors surface.
- SANs decoded from the raw extension (DER walk) and matched as whole names.
- Immutable deploy-, request- and rollback- records; already-bound instances
get no snapshot; -Rollback takes the newest snapshot not yet rolled back,
-Snapshot picks one.
- certreq -new, -submit, -accept and the key grants go through ShouldProcess;
a declined or failed prerequisite binds nothing.
- Rollback and automatic restore work per instance, read back, report failures.
Also found while testing: PowerShell 7 returns RSACng for a CSP key, so the
provider check now reads CERT_KEY_PROV_INFO; ForEach-Object member form returned
nothing under -WhatIf; stderr capture under Stop threw on 5.1; LocalSystem and
NetworkService accounts go to icacls as SIDs; SQL Agent is started again after
a restart; signature checked by OID.
DEPLOY.md gains the run procedure: preflight, DEV, docker-1 checks, production, rollback.
Co-Authored-By: Claude Opus 5.5 <[email protected]>