Skip to content

Releases: TheAbider/RackStack

RackStack v1.98.0

19 Apr 00:07

Choose a tag to compare

v1.98.0 — Dashboard, History/Replay, ndjson streaming, PSGallery module, WinGet manifest

Five new pieces — RackStack now has a local HTTP dashboard, a replayable CLI history, stream-mode output for orchestration, a proper PowerShell module on the Gallery side, and a WinGet manifest generator.

Headline

# Run from any admin terminal (after Install-RackStack.ps1 -Install):
RackStack -Action Dashboard              # http://127.0.0.1:8080 dashboard + /api/health
RackStack -Action History                # last 20 CLI invocations
RackStack -Action Replay -Config 3       # re-run the 3rd-most-recent invocation
RackStack -Action Batch -Config x.json -OutputFormat JSON -Stream   # ndjson event stream

# From PowerShell scripts, after Install-Module RackStack:
Invoke-RackStackAction SelfTest -OutputFormat JSON      # returns parsed object
Update-RackStack                                         # in-place upgrade via cmdlet
Test-RackStackUpdate                                     # returns @{UpdateAvailable=$true/$false; ...}

New features

  • -Action Dashboard — embedded HTTP server that surfaces live health data as HTML plus JSON endpoints. Binds to 127.0.0.1:8080 by default; override with -Config "port" or -Config "host:port" (e.g., -Config "0.0.0.0:8080" for LAN access on already-elevated processes). Routes: / (auto-refreshing HTML dashboard with CPU/memory/disk/uptime, colored against DashboardWarningPercent / DashboardCriticalPercent), /api/health, /api/version, /api/selftest. Browser-without-JavaScript friendly (meta-refresh every 10s).
  • -Action History — shows the last N CLI invocations from the rolling history log (50-entry cap at $TempPath\RackStack-ActionHistory.json). Every CLI action auto-records before execution. -Config <N> limits the display count (default 20, max 50). Supports -OutputFormat JSON.
  • -Action Replay -Config <N> — re-runs a prior CLI invocation by 1-based index from History (1 = most recent). Reconstructs the exact arg set (-Tier, -Config, -OutputFormat, -Silent, -Quiet, -Stream) and spawns a fresh RackStack.exe so the replay's exit code propagates back to the caller.
  • -Stream switch — ndjson event output for long-running actions when combined with -OutputFormat JSON. Batch mode emits typed batch_start / batch_end events that orchestration can parse line-by-line. Per-step Batch events are on the roadmap for future releases.
  • PowerShell Gallery moduleRackStack.psd1 + RackStack.psm1 ship alongside the EXE. After Install-Module RackStack -Scope CurrentUser, scripts and pipelines get typed cmdlets: Invoke-RackStackAction, Update-RackStack, Test-RackStackUpdate, Invoke-RackStackSelfTest, Export-RackStackLogs, Get-RackStackVersion, Get-RackStackActionList, Get-RackStackExePath, Test-RackStackInstalled. EXE auto-located via $env:RACKSTACK_EXE, the Programs-and-Features registry key, or Get-Command RackStack. JSON output is parsed into objects automatically. local/publish-psgallery.ps1 drives the submission.
  • WinGet manifest generatorlocal/generate-winget-manifest.ps1 produces the three YAML files required by microsoft/winget-pkgs. Uses the portable installer type so winget install TheAbider.RackStack works without admin at install time. The manifests land under winget/manifests/t/TheAbider/RackStack/<version>/ and include the SHA256 of the compiled EXE.

Release assets — SHA256

1250f350012da8656db1ed1ec4d1555d4a06f44b9ce3c829eb5f2de18f2c8e9f  RackStack.exe
d04adad79544190e064a233ea84d9dcfd339885e120fe8b1fe64a5e7871fec9e  RackStack v1.98.0.ps1
84d8368ca48a53538b8361a61e0557d6907431312350e39df641587f14aa8c85  defaults.example.json

65 modules, 4535 tests, 176 CLI actions, 615 functions

RackStack v1.97.0

18 Apr 22:38

Choose a tag to compare

v1.97.0 — UpdateSelf, Rollback, weekly update check, upgrade-safe installer, tab completion

You can now update RackStack from within RackStack

RackStack -Action CheckForUpdate    # tells you if a newer release exists (exit 2 if yes)
RackStack -Action UpdateSelf        # downloads + SHA256-verifies + atomically swaps the EXE
RackStack -Action Rollback          # restores the previous version from .old backup

UpdateSelf uses a trick Windows allows but you can't use with normal Copy-Item: you can rename a running EXE (you just can't delete or overwrite it). So the upgrade flow is:

  1. Query GitHub Releases API for the latest tag
  2. Download the new RackStack.exe to a staging directory
  3. SHA256-verify it against the hash published in the release body
  4. Rename the currently-running RackStack.exe to RackStack.exe.old — Windows allows this, our process keeps running from the renamed handle
  5. Copy the new EXE into RackStack.exe
  6. Update Programs and Features DisplayVersion + EstimatedSize in the registry

On next launch the new EXE runs, and an early-startup hook in 00-Initialization.ps1 cleans up any .pending-delete sibling from rollbacks. The .old backup is kept until the next UpdateSelf, so -Action Rollback always has something to revert to.

Full list of changes

  • New: -Action UpdateSelf — in-place upgrade of the installed EXE (download, SHA256 verify against release body, atomic rename swap, registry refresh). Supports -OutputFormat JSON. Exits 0 if already latest, 1 on error. Requires a prior -Install.
  • New: -Action Rollback — restore the previous EXE from the .old backup using the same rename-swap pattern. Registry DisplayVersion is refreshed from the rolled-back EXE's FileVersion so Programs and Features stays accurate.
  • New: -Action ScheduleUpdateCheck — registers a weekly scheduled task that runs RackStack -Action CheckForUpdate -OutputFormat JSON as SYSTEM and writes the JSON result to $TempPath\RackStack_UpdateCheck.json. Fleets aggregate that file via their RMM / SCCM / file server to see which hosts are out of date.
  • New: Install-RackStack.ps1 -Rollback — out-of-tool rollback for when the installed EXE is too broken to run its own -Action Rollback. Swaps RackStack.exe.old back to primary. No network needed.
  • New: Install-RackStack.ps1 -Install now works as an upgrade path too. Previously a re-run against an existing install would fail because Windows locks a running RackStack.exe against overwrite. It now uses the same rename-then-copy pattern as UpdateSelf — existing EXE moves aside to .old before the new one copies in.
  • New: Every -Install generates C:\Program Files\RackStack\RackStack-TabComplete.ps1 — a Register-ArgumentCompleter script bound to the installed EXE's live action list. Operators dot-source it from their PowerShell profile to get RackStack -Action <TAB> completion on every supported action, plus completion for -Tier (Light|Standard|Aggressive) and -OutputFormat (Console|JSON).
  • New: Startup cleanup — if RackStack.exe.pending-delete is sitting next to the running EXE, it's removed. This is the deferred half of the atomic swap; Windows forbids deleting a running EXE, so the superseded binary is renamed to .pending-delete during Rollback and purged on the next launch.

Release assets — SHA256

6f84ecb566d85d15a061d48f8552e80b9918d2e816c8afb2c0dca45895096246  RackStack.exe
7332adb644d0f3951e82b42598aafb05e5ccfc885a46cbf503ddd45bdbfa3217  RackStack v1.97.0.ps1
84d8368ca48a53538b8361a61e0557d6907431312350e39df641587f14aa8c85  defaults.example.json

65 modules, 4535 tests, 173 CLI actions, 615 functions

RackStack v1.96.0

17 Apr 07:47

Choose a tag to compare

v1.96.0 — CheckForUpdate, ExportLogs, proper Windows install, installer SHA256 verification

Biggest thing: RackStack can now install itself as a proper Windows program

# Install as a Windows program (shows up in Start Menu + Settings > Apps)
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/TheAbider/RackStack/master/Install-RackStack.ps1))) -Install

# Later, run from any admin terminal:
RackStack -Action CheckForUpdate

# Uninstall from Windows Settings > Apps > RackStack > Uninstall
# or from the command line:
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/TheAbider/RackStack/master/Install-RackStack.ps1))) -Uninstall

New features

  • -Action CheckForUpdate — queries the GitHub Releases API and compares the running version to the latest published tag. Supports -OutputFormat JSON. Exit codes: 0 = up to date, 2 = newer version available, 1 = GitHub unreachable / parse error. Designed for scheduled tasks or CI gates that want to detect drift against the published build.
  • -Action ExportLogs — bundles the current transcript, up to ten recent transcripts, session state, favorites, command history, the current Changelog.md, and an environment snapshot into a single zip ready to attach to a support ticket. Pass -Config <directory> to control where the zip lands (defaults to $script:TempPath). Supports -OutputFormat JSON which reports the zip path, size, and included file list.
  • Install-RackStack.ps1 -Install — proper Windows install. Copies RackStack.exe to C:\Program Files\RackStack, adds that directory to the system PATH, creates an All-Users Start Menu shortcut, and registers the tool under HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\RackStack so Windows Settings → Apps lists it with a working Uninstall button. After install, RackStack works from any admin terminal.
  • Install-RackStack.ps1 -Uninstall — reverses -Install. Removes the Program Files directory, strips the PATH entry, removes the Start Menu shortcut, and unregisters from Programs and Features. No network needed. The same reversal is embedded as the UninstallString so clicking "Uninstall" in Windows Settings works even offline.
  • Installer SHA256 verification — the bootstrap script now parses the SHA256 published in the release body and verifies the downloaded RackStack.exe against it with Get-FileHash. Deletes the file and exits 1 on mismatch. Defense-in-depth against an intermediary tampering with the GitHub asset download.

Fixes

  • OS build number detection now warns (yellow console write) when both the registry read and the WMI fallback fail, instead of silently pinning $script:OSBuildNumber = 0. A zero build number made every version-gated feature misbehave (tool thought it was running on a pre-2008R2 OS) with no diagnostic.
  • Domain join retry exhaustion now includes the last exception message in the failure summary. Previously the operator saw only "Maximum attempts reached" with no hint about why (DNS? credentials? DC unreachable?). The last error is preserved across retries and printed after the final attempt.

Release assets — SHA256

32b6537b60a482c4dbbb6383698bfe3e68e073c2f0a6096b991e8ee23d418bc7  RackStack.exe
d0fb0c4ec6c03d0daa9f8b58e20cb852603d4b74e97510c5074cebc4d759a7ef  RackStack v1.96.0.ps1
84d8368ca48a53538b8361a61e0557d6907431312350e39df641587f14aa8c85  defaults.example.json

65 modules, 4535 tests, 170 CLI actions, 615 functions

RackStack v1.95.0

17 Apr 06:48

Choose a tag to compare

v1.95.0 — SelfTest action, help expansion, log redaction, cluster/replica undo

  • New: -Action SelfTest — a tool self-diagnostic action for operators running RackStack.exe across a fleet. Verifies PowerShell version, elevation, version consistency across Header.ps1/RackStack.ps1/$script:ScriptVersion, module count (65 in modular mode), defaults.json parse validity, temp-path writability, FileServer reachability (HEAD with 5s timeout), and agent-installer configuration. Supports -OutputFormat JSON for structured monitoring; exits 1 if any check fails.
  • New: Expanded help search topics. The interactive help <keyword> searcher now recognises 9 new category topics covering CLI actions that previously only appeared in -ListActions: SelfTest, Security Audits, Network Audits, Storage & Cluster Audits, Hyper-V & VM Audits, System Audits, Fleet & Reporting, Server Roles Audit, and Scores & Dashboards. Each topic lists its specific action names so help security now discovers TLSAudit, KerberosAudit, CredGuardAudit, etc.
  • New: Write-StructuredLog now auto-redacts values for keys that look like secrets (matches password, passwd, pwd, secret, token, apikey, api_key, credential, clientsecret, authorization, bearer — case-insensitive). Values are replaced with [REDACTED] before the line is written to disk. Defense-in-depth so a future caller that accidentally routes a credential through structured logging can't leak it to the transcript or log file.
  • New: Joining a failover cluster (Add-ClusterNode) and creating a Storage Replica partnership (New-SRPartnership) now register a manual-only undo entry — the user can trigger it explicitly via "Undo last change" but it never runs automatically. The undo script paths are single-quote-escaped to prevent injection. Removing a cluster node or breaking replication is destructive, so the undo is opt-in rather than opt-out.

Release assets — SHA256

0ba566473827ead5f81e1764af9fbe681f593940928f813540890d100a0a2400  RackStack.exe
1cba77daefea023924e19255c38d689a0e7e599f345b1b28f5eb2c5b14300588  RackStack v1.95.0.ps1
84d8368ca48a53538b8361a61e0557d6907431312350e39df641587f14aa8c85  defaults.example.json

65 modules, 4535 tests, 168 CLI actions, 615 functions

RackStack v1.94.11

17 Apr 05:31

Choose a tag to compare

v1.94.11 — Fix -Action Batch headless mode (Silent + JSON)

  • Fix: -Action Batch -Silent no longer cancels on the confirmation prompt. Previously Confirm-UserAction in silent mode returned the DefaultNo answer, so every headless batch run aborted before doing anything. The confirmation is now skipped entirely in -Silent mode (the caller already committed by invoking Batch with a config).
  • Fix: -Action Batch -Silent no longer hangs on Read-Host when creating a local admin account. In silent mode the password now comes from (in priority order): Config.LocalAdminPassword (inline), the env var named by Config.LocalAdminPasswordEnv, or $env:RACKSTACK_LOCAL_ADMIN_PWD. If none are set, the step fails cleanly with a diagnostic instead of blocking forever.
  • Fix: -Action Batch -Silent no longer hangs on the post-failure undo prompt. The prompt now goes through Confirm-UserAction, which in silent mode returns the safe default (skip undo) rather than blocking on Read-Host.
  • Fix: -Action Batch -OutputFormat JSON now emits a machine-readable summary on completion — {Action, Timestamp, Hostname, ConfigType, DryRun, TotalSteps, ChangesApplied, Skipped, Errors, RebootNeeded, Success}. Previously the Batch action silently produced no JSON even when JSON was requested.

Release assets — SHA256

4dc5989b531210664457009feef13e940cc7b08c4c0f03caf1424339f7ecb6b7  RackStack.exe
2e8653128681879121ac06faf6c32b395c0cfc42e586361e54060299e3958034  RackStack v1.94.11.ps1
84d8368ca48a53538b8361a61e0557d6907431312350e39df641587f14aa8c85  defaults.example.json

65 modules, 4535 tests, 167 CLI actions, 615 functions

RackStack v1.93.0 — NetMap, 166 CLI Actions

01 Apr 20:46

Choose a tag to compare

RackStack v1.93.0

New network dependency mapping + SMB fix.

New Features

  • NetMap CLI action: Discovers all network dependencies in one command — DNS servers, default gateways, domain controllers, NTP source, iSCSI targets, top TCP connections by remote host, and SMB shares. Structured JSON output for fleet-wide dependency mapping. Run: RackStack.exe -Action NetMap

Bug Fixes

  • SMB Session Audit: Stale session detection now works — was using nonexistent ConnectedTime property, now correctly uses SecondsActive

Stats

65 modules | 4551 tests | 166 CLI actions | 650 functions | 66,794 lines

SHA256 Checksums

e2a029c23268a4e4ec475aec813048b181de48697eadc42be70f1b8bf875844f  RackStack.exe
51b595a109da1803ea178d36fd8c23c1bd64194394b5488fefe6356fefdcae2f  RackStack v1.93.0.ps1
84d8368ca48a53538b8361a61e0557d6907431312350e39df641587f14aa8c85  defaults.example.json

RackStack v1.92.1

01 Apr 19:22

Choose a tag to compare

RackStack v1.92.1

Reliability fixes preventing hangs on systems with degraded WMI.

Bug Fixes

  • WMI Audit: Provider test now correctly displays query latency — broken string interpolation was showing "OK (ms)" with no number
  • Port Audit: TCP connections properly disposed in finally block — prevents socket handle leaks on connection exceptions
  • CIM Timeouts: Added -OperationTimeoutSec to 14+ CIM queries across BIOSAudit, MemoryAudit, DiskAudit, DriverAudit, CredGuardAudit, USBDeviceAudit, ServiceAccountAudit, and SysInfoAudit — prevents indefinite hangs when WMI providers are unresponsive

Stats

65 modules | 4540 tests | 165 CLI actions | 649 functions | 66,657 lines

SHA256 Checksums

f93c150c19701c25fc4e6047b4e1c6b31fcd980d10a198d42a17ee938559bcc3  RackStack.exe
0ad865877c50fd80d6235bed1d35a73db356aca4dffc086711dd33ccff937240  RackStack v1.92.1.ps1
84d8368ca48a53538b8361a61e0557d6907431312350e39df641587f14aa8c85  defaults.example.json

RackStack v1.91.1

01 Apr 15:49

Choose a tag to compare

RackStack v1.91.1

9 bug fixes targeting networking safety, session reliability, and UX polish.

Bug Fixes

  • IP rollback: Handles multiple default routes correctly — prevents leaving adapter unconfigured on rollback failure
  • VLAN safety: Partial adapter matching now warns about non-exact matches and blocks when ambiguous — prevents silent misconfiguration
  • NTP timeout: Time accuracy test uses Invoke-WithTimeout — prevents 30+ second UI freeze when internet is unreachable
  • Download resume: Tracks elapsed time for resumed transfers — fixes "0 seconds" and wrong speed display
  • Session restore: Now properly restores SessionChanges from saved state instead of dropping them
  • Write-CenteredOutput: Now respects the $width parameter instead of ignoring it
  • Performance: Removed per-change Get-Command overhead in Add-SessionChange
  • Favorites: Deduplication prevents adding the same item multiple times
  • Session summary: Separator lines properly indented to match surrounding content

Stats

65 modules | 4528 tests | 163 CLI actions | 647 functions | 66,471 lines

SHA256 Checksums

6b223c6e5f29764c16f1c87eb91cd8815eb8478273722f607898cf330edd789a  RackStack.exe
27758c0b829296a812e48ff288b2fac45eb14309127e0e40fba80df52d88d318  RackStack v1.91.1.ps1
84d8368ca48a53538b8361a61e0557d6907431312350e39df641587f14aa8c85  defaults.example.json

RackStack v1.90.2

01 Apr 02:06

Choose a tag to compare

RackStack v1.90.2

Performance and reliability fixes across config export, CLI batch mode, and menu system.

Bug Fixes

  • Baseline Save: Now stores actual performance snapshot data instead of just the file path
  • Cleanup CLI: Validates profile tier and exits with error for invalid profiles instead of silently doing nothing
  • BootAudit: Reuses existing CIM result for DEP check instead of redundant second query
  • Config Export: Uses List<string> instead of 120+ += array operations — significantly faster on servers with many adapters/disks/services
  • Config Import: Uses explicit $script: scope for local admin account name variable
  • Save Profile: Validates parent directory exists before attempting to write
  • Menu Cache: Configure Server menu now caches Test-RebootPending result instead of hitting registry/WMI on every render

Stats

65 modules | 4515 tests | 157 CLI actions | 644 functions | 66,308 lines

SHA256 Checksums

aa78088cd575fa969d0dd63b6adf2a82574a0236253db67e82161babed25c3ae  RackStack.exe
ab2d0ac14d2e60a385137f1d9aaf0ae9d358611514696b257c8f2dcc765309c7  RackStack v1.90.2.ps1
84d8368ca48a53538b8361a61e0557d6907431312350e39df641587f14aa8c85  defaults.example.json

RackStack v1.89.13

15 Apr 21:48

Choose a tag to compare

v1.89.13 — Security hardening, SMART disk data, failed services view

Security

  • Password generator now uses RNGCryptoServiceProvider instead of Get-Random for cryptographically secure index generation.
  • RDP and WinRM subnet restriction prompts now validate CIDR format and reject overly broad subnets (wider than /8).

Fixes

  • User audit no longer flags accounts with null password expiry as "EXPIRED" — previously $null -lt (Get-Date) evaluated true in PowerShell.
  • Password strength checker now uses PtrToStringBSTR (correct paired call) instead of PtrToStringAuto, preventing potential data misread on some platforms.
  • Password strength checker and DSRM password validation now clear plaintext variables from memory in finally blocks.
  • Removed dead code in scheduled export CLI action where both branches returned the same value.
  • Removed leftover debug environment variable assignment in BIOS audit.

New features

  • Disk reliability / SMART data section in health check — shows temperature, wear level, power-on hours, and read/write error counts per physical disk.
  • Failed services quick view in Service Manager — shows all Automatic services that are Stopped, the most common troubleshooting query.

Enhancements

  • Storage Manager disk display now shows serial number and media type (SSD/HDD) alongside the model name.

Stats

65 modules, 4497 tests, 157 CLI actions, 644 functions

SHA256 hashes

dee62e38e63bf27712c85762f6d9e9cb563a85a0483e83a82ab62aa493c55d6c  RackStack.exe
8bfad754f771bb6618bf2809ade95015eb7258875360877dedd0f26551b1d539  RackStack v1.89.13.ps1
84d8368ca48a53538b8361a61e0557d6907431312350e39df641587f14aa8c85  defaults.example.json