diff --git a/Bump-Version.ps1 b/Bump-Version.ps1 index be2e7e6..1db4fcd 100644 --- a/Bump-Version.ps1 +++ b/Bump-Version.ps1 @@ -8,7 +8,7 @@ ################################################## ## Project: Elysium ## ## File: Bump-Version.ps1 ## -## Version: 2.2.5 ## +## Version: 2.3.0 ## ## Support: support@cqre.net ## ################################################## diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f02b33..6928340 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,16 @@ Starting with **v2.2.0**, Elysium uses a **unified project version**. All script --- +## [2.3.0] — 2026-06-09 + +### Added +- `Test-WeakADPasswords.ps1` now checks the installed DSInternals version at startup: + - **v6.2** (unsigned) is flagged with a warning explaining that unsigned native DLLs are blocked and replication will fail. Remediation: `Update-Module DSInternals`. + - **Below v7.0** triggers an interactive prompt offering to run `Update-Module DSInternals -Force` automatically. If accepted, the script updates the module and exits cleanly so the operator can re-run with the new version loaded. + - v7.0+ is required because it fixes intermittent CRC errors mid-replication and `Test-PasswordQuality` result truncation bugs. + +--- + ## [2.2.5] — 2026-06-09 ### Fixed diff --git a/Elysium.Common.ps1 b/Elysium.Common.ps1 index c767fe9..fb22832 100644 --- a/Elysium.Common.ps1 +++ b/Elysium.Common.ps1 @@ -1,4 +1,4 @@ -$script:ElysiumVersion = '2.2.5' +$script:ElysiumVersion = '2.3.0' function Invoke-RestartWithExecutable { param( diff --git a/Elysium.ps1 b/Elysium.ps1 index c033ce8..bab6d14 100644 --- a/Elysium.ps1 +++ b/Elysium.ps1 @@ -7,7 +7,7 @@ ################################################## ## Project: Elysium ## ## File: Elysium.ps1 ## -## Version: 2.2.5 ## +## Version: 2.3.0 ## ## Support: support@cqre.net ## ################################################## diff --git a/ElysiumSettings.txt.sample b/ElysiumSettings.txt.sample index 94fccf7..11676c5 100644 --- a/ElysiumSettings.txt.sample +++ b/ElysiumSettings.txt.sample @@ -8,7 +8,7 @@ ################################################## ## Project: Elysium ## ## File: ElysiumSettings.txt ## -## Version: 2.2.5 ## +## Version: 2.3.0 ## ## Support: support@cqre.net ## ################################################## diff --git a/Extract-NTHashes.ps1 b/Extract-NTHashes.ps1 index 03a5496..5c220f8 100644 --- a/Extract-NTHashes.ps1 +++ b/Extract-NTHashes.ps1 @@ -7,7 +7,7 @@ ################################################## ## Project: Elysium ## ## File: Extract-NTHashes.ps1 ## -## Version: 2.2.5 ## +## Version: 2.3.0 ## ## Support: support@cqre.net ## ################################################## diff --git a/Prepare-KHDBStorage.ps1 b/Prepare-KHDBStorage.ps1 index 861a8f9..6467088 100644 --- a/Prepare-KHDBStorage.ps1 +++ b/Prepare-KHDBStorage.ps1 @@ -7,7 +7,7 @@ ################################################## ## Project: Elysium ## ## File: Prepare-KHDBStorage.ps1 ## -## Version: 2.2.5 ## +## Version: 2.3.0 ## ## Support: support@cqre.net ## ################################################## diff --git a/Test-WeakADPasswords.ps1 b/Test-WeakADPasswords.ps1 index bf85cb5..5f7e7e8 100644 --- a/Test-WeakADPasswords.ps1 +++ b/Test-WeakADPasswords.ps1 @@ -8,7 +8,7 @@ ################################################## ## Project: Elysium ## ## File: Test-WeakADPasswords.ps1 ## -## Version: 2.2.5 ## +## Version: 2.3.0 ## ## Support: support@cqre.net ## ################################################## @@ -392,6 +392,26 @@ try { } } +# Version check: v6.2 was unsigned (blocks native DLLs, causes replication failures); +# v7.0 fixes intermittent CRC errors mid-replication and Test-PasswordQuality result truncation. +$dsInternalsVersion = (Get-Module -Name DSInternals).Version +$minimumVersion = [version]'7.0' +$unsignedVersion = [version]'6.2' +if ($dsInternalsVersion -eq $unsignedVersion) { + Write-Warning ("DSInternals {0} is not digitally signed, which blocks its native DLLs and causes replication failures. Update to v7.0+: Update-Module DSInternals" -f $dsInternalsVersion) +} elseif ($dsInternalsVersion -lt $minimumVersion) { + $resp = Read-Host ("DSInternals {0} is installed; v7.0 fixes intermittent replication CRC errors and result truncation. Update now? [Y/N]" -f $dsInternalsVersion) + if ($resp -match '^(?i:y|yes)$') { + try { + Update-Module -Name DSInternals -Force -ErrorAction Stop + Write-Host '[+] DSInternals updated. Please re-run the script to load the new version.' + exit 0 + } catch { + Write-Warning ("DSInternals update failed: {0}" -f $_.Exception.Message) + } + } +} + # Resolve KHDB path with fallbacks $installationPath = $ElysiumSettings["InstallationPath"] if ([string]::IsNullOrWhiteSpace($installationPath)) { $installationPath = $scriptRoot } diff --git a/Uninstall.ps1 b/Uninstall.ps1 index 1b3eb27..acbae86 100644 --- a/Uninstall.ps1 +++ b/Uninstall.ps1 @@ -7,7 +7,7 @@ ################################################## ## Project: Elysium ## ## File: Uninstall.ps1 ## -## Version: 2.2.5 ## +## Version: 2.3.0 ## ## Support: support@cqre.net ## ################################################## diff --git a/Update-KHDB.ps1 b/Update-KHDB.ps1 index 4a401d0..2345a04 100644 --- a/Update-KHDB.ps1 +++ b/Update-KHDB.ps1 @@ -7,7 +7,7 @@ ################################################## ## Project: Elysium ## ## File: Update-KHDB.ps1 ## -## Version: 2.2.5 ## +## Version: 2.3.0 ## ## Support: support@cqre.net ## ################################################## diff --git a/Update-LithnetStore.ps1 b/Update-LithnetStore.ps1 index efd65de..9adc184 100644 --- a/Update-LithnetStore.ps1 +++ b/Update-LithnetStore.ps1 @@ -7,7 +7,7 @@ ################################################## ## Project: Elysium ## ## File: Update-LithnetStore.ps1 ## -## Version: 2.2.5 ## +## Version: 2.3.0 ## ## Support: support@cqre.net ## ##################################################