Files
ROMFASTSQL/scripts/ups-monitor/set-praguri.ps1
Marius 7cf64532b8 feat(ups): unelte pentru testul de autonomie cu scoaterea din priza
set-praguri.ps1 schimba pragurile de oprire fara sa atinga parola SMTP si
reporneste taskul, pentru ca ups-monitor.ps1 citeste configuratia o singura
data, la pornirea buclei.

trace-baterie.ps1 scrie o citire la fiecare 20 s intr-un CSV local, iar
start-trace.ps1 il inregistreaza ca task programat sub SYSTEM. Local si
detasat, pentru ca intr-o pana reala reteaua cade odata cu curentul daca
switch-ul nu e pe UPS: sesiunea SSH devine oarba si emailurile esueaza, deci
CSV-ul de pe server ramane singura sursa de date. Taskul are aceleasi
AllowStartIfOnBatteries / DontStopIfGoingOnBatteries ca monitorul - fara ele
Windows l-ar opri exact cand incepe ce vrem sa masuram.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RRyaDj39hPQ89SZS6URRpS
2026-08-27 15:47:56 +03:00

67 lines
2.2 KiB
PowerShell

<#
.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 { " $_" }