Powershell Script ABfB Shutdown
Hallo,
habe ein kleines Powershell Script gebastelt, welches über die Abfrage des ABfB Logs (standardmässig unter C:\ProgramData\ActiveBackupforBusinessAgent\log) eine erfolgreiche Sicherung erkennt und danach runterfährt.
Rich (BBCode):
While ( $true ) {
$Data = Get-Content -Path C:\ProgramData\ActiveBackupforBusinessAgent\log\log.txt | Where-Object {$_ -like '*get response*backup_result*'}
for ($i=0; $i -lt $DATA.length; $i++){
$BackupTimeUTC = $DATA[$i].Substring($DATA[$i].IndexOf("last_success_time")+20,10)
$TimeNow = Get-Date
$BackupTime = (Get-Date '1/1/1970').AddSeconds($BackupTimeUTC).ToLocalTime()
$TimeDiff = NEW-TIMESPAN –Start $BackupTime –End $TimeNow
Write-Output $TimeDiff.TotalMinutes
if ( $TimeDiff.TotalMinutes -lt 2 ) {
Write-Output 'End of Backup at' $BackupTime ' - Computer going down!' > C:\temp\ABfB.log
Start-Sleep -Seconds 120
Stop-Computer
}
}
Start-Sleep -Seconds 20
}
Ich starte das Script per "Powershell -File Script.ps1" aus dem Taskmanager kurz nach Start der Sicherung.
Schwächen:
- Abhängig von Log-Ausgabe/Pattern, muss bei Updates ggf. angepasst werden
- fährt nur bei erfolgreicher Sicherung runter (last_success_time weniger als 2 Minuten her).
- log wird zyklisch gewechselt (wenn größer als 1 MB), es könnte zu einem Wechsel während der Sleep time kommen und die Meldung wird übersehen (kann man durch zusätzliches Lesen der log.txt_0 Datei beheben/verringern)
- Endlosschleife, da könnte man ein ggf. eine giveup Bedingung einbauen (wenn man sicher ist, das kein Backup mehr läuft).
Ich weiss, das ist ein einfacher Ansatz, das Script hat bei mir aber in umfangreichen Tests (seit 2 Tagen
) funktioniert.
Wie man bei fehlerhafter Sicherung parsen muss, damit trotzdem ein Shutdown gemacht wird, hängt vom Fehler und der dabei erzeugten Logeinträge ab.
Vielleicht kann da jemand mal testen und das dann posten.
Grüße,
Rainer