A solução que acabei indo foi criar um VBScript que é executado na inicialização (usando cscript e Task Scheduler).
O script:
set wmi = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\.\root\cimv2")
set batteryColl = wmi.ExecQuery("select * from Win32_Battery")
set osColl = wmi.ExecQuery("select * from Win32_OperatingSystem")
while true
for each battery in batteryColl
battery.Refresh_
if battery.batteryStatus = 1 and battery.EstimatedChargeRemaining <= 25 then
for each os in osColl
os.Win32Shutdown 5
next
end if
next
wscript.Sleep 15000
wend
Crédito: link