<# .SYNOPSIS Schimba pragurile de oprire din config.json fara sa atinga parola SMTP, si reporneste monitorul ca sa le citeasca. .DESCRIPTION Se ruleaza PE SERVER, ridicat (Administrator). Configuratia e citita o singura data, la pornirea buclei, deci orice modificare cere repornirea taskului - de asta se ocupa scriptul. Fara parametri, doar afiseaza pragurile curente. .EXAMPLE # praguri largite pentru un test de autonomie powershell -ExecutionPolicy Bypass -File .\set-praguri.ps1 -Minute 60 -Procent 25 .EXAMPLE # inapoi la valorile de productie powershell -ExecutionPolicy Bypass -File .\set-praguri.ps1 -Minute 10 -Procent 35 #> [CmdletBinding()] param( [string]$InstallDir = 'C:\ROMFAST\ups-monitor', [ValidateRange(1, 1440)][int]$Minute, [ValidateRange(1, 99)][int]$Procent, [switch]$FaraRepornire ) Set-StrictMode -Version 2.0 $ErrorActionPreference = 'Stop' $path = Join-Path $InstallDir 'config.json' $cfg = Get-Content -LiteralPath $path -Raw -Encoding UTF8 | ConvertFrom-Json Write-Host ("Praguri curente : {0} min pe baterie / {1}% incarcare" -f ` $cfg.shutdownAfterMinutesOnBattery, $cfg.shutdownAtBatteryPercent) if (-not $Minute -and -not $Procent) { Write-Host 'Nimic de schimbat (da -Minute si/sau -Procent).' return } if ($Minute) { $cfg.shutdownAfterMinutesOnBattery = $Minute } if ($Procent) { $cfg.shutdownAtBatteryPercent = $Procent } $cfg | ConvertTo-Json -Depth 5 | Set-Content -LiteralPath $path -Encoding UTF8 Write-Host ("Praguri noi : {0} min pe baterie / {1}% incarcare" -f ` $cfg.shutdownAfterMinutesOnBattery, $cfg.shutdownAtBatteryPercent) if ($cfg.shutdownAtBatteryPercent -le 20) { Write-Warning 'Pragul e sub cel al Windows-ului (20%): Windows va opri serverul primul, brutal, inaintea opririi curate.' } if ($FaraRepornire) { Write-Warning 'Monitorul NU a fost repornit - inca ruleaza cu pragurile vechi.' return } Stop-ScheduledTask -TaskName 'ROMFAST UPS Monitor' Start-Sleep -Seconds 3 Start-ScheduledTask -TaskName 'ROMFAST UPS Monitor' Start-Sleep -Seconds 18 $log = Join-Path $InstallDir ('log\ups-monitor-{0}.log' -f (Get-Date -Format 'yyyy-MM')) Get-Content -LiteralPath $log -Tail 2 | ForEach-Object { " $_" }