# Sample functional PowerShell script using data-driven checkbox definitions # Single-file, dynamic UI & routing based on a single $Global:Tasks table #region Config $Port = 8081 #endregion #region Task Definitions # Each task: Id → checkbox HTML id # Name → route name & JS handler path # Label → displayed text # HandlerFn → PowerShell function to invoke $Global:Tasks = @( @{ Id = 'setSVSPowerplan'; Name = 'setSVSPowerplan'; Label = 'Set SVS Powerplan'; HandlerFn = 'Set-SVSPowerPlan' }, @{ Id = 'installSVSMSPModule'; Name = 'installSVSMSPModule'; Label = 'Install SVSMSP Module'; HandlerFn = 'Install-SVSMSPModule' }, @{ Id = 'installCyberQP'; Name = 'installCyberQP'; Label = 'Install CyberQP'; HandlerFn = 'Install-CyberQP' } # ...add more tasks here ) #endregion #region Handler Function Stubs function Set-SVSPowerPlan { param($Context) Write-LogHybrid -Message "[Handler] PowerPlan set" -Level Success if ($Context) { Respond-Text $Context "Powerplan applied" } } function Install-SVSMSPModule { param($Context) Write-LogHybrid -Message "[Handler] SVSMSP Module installed" -Level Success if ($Context) { Respond-Text $Context "SVSMSP Module installed" } } function Install-CyberQP { param($Context) Write-LogHybrid -Message "[Handler] CyberQP installed" -Level Success if ($Context) { Respond-Text $Context "CyberQP installed" } } # Utility for sending plain-text HTTP responses function Respond-Text { param($Context, $Text) $buffer = [Text.Encoding]::UTF8.GetBytes($Text) $Context.Response.ContentType = 'text/plain' $Context.Response.ContentLength64 = $buffer.Length $Context.Response.OutputStream.Write($buffer, 0, $buffer.Length) $Context.Response.OutputStream.Close() } #endregion #region UI Generation function Get-UIHtml { # Build checkbox HTML $checkboxes = $Global:Tasks | ForEach-Object { "" } -join "`n" # Build JS tasks array $tasksJs = $Global:Tasks | ForEach-Object { "{ id: '$($_.Id)', handler: '/$($_.Name)' }" } -join ",`n " $html = @"