Ich starte das über die Aufgabenplanung auf meinem PC einmal monatlich. Im Reiter Bedingungen noch den Haken bei 'Beenden, wenn Computer in Akkubetrieb wechselt' entfernen und dafür in 'Einstellungen' den Haken bei 'Aufgabe so schnell wie möglich nach einem verpassten Start ausführen' setzen - dann wird das auch durchgeführt wenn zum Zeitpunkt des geplanten Backups der Rechner gerade nicht läuft.
Ausgeführt wird "powershell.exe" mit diesen Parametern: "-ExecutionPolicy Bypass C:\Users\martrin\OneDrive\openWB\Get-OpenWBBackup.ps1" Wobei der Pfad & Name zum Script natürlich noch auf die eigene Umgebung angepasst werden muss.
Code: Alles auswählen
# Environmental parameters
$OpenWBIP = '192.168.178.51'
$LocalBackupFolder = "$Env:UserProfile" + '\Documents\'
# Generate backup file name, change optional
$LocalBackupFileName = ("OpenWB-backup-" + (get-date -format u) + ".tar.gz").Replace(":","-")
$LocalBackupPath = $LocalBackupFolder + $LocalBackupFileName
# Path definitions, no need to change them unless openWB changes location of those files
$OpenWBBackupPath = '/openWB/web/tools/backup.php'
$URIToCall = "http://" + $OpenWBIP + $OpenWBBackupPath
$Result = Invoke-WebRequest -uri $URIToCall #create backup
if ($Result.StatusCode -eq '200') # New backup created?
{
try
{
#$OpenWBBackupDownloadPath = '/openWB/web/backup/backup.tar.gz' # We could also use $Result.Links.href to dynamically fetch location if we wanted to. Does require extra handling if more than one link is provided
if ($Result.Links.Count -gt 1)
{
throw "More than one link found in response, cannot proceed."
}
$OpenWBBackupDownloadPath = $Result.Links.href
$BackupURI = "http://" + $OpenWBIP + $OpenWBBackupDownloadPath
Invoke-WebRequest -Uri $BackupURI -OutFile $LocalBackupPath # Downlaod backup and store locally
Write-Host "Created backup at $LocalBackupPath" # we're done here
}
catch
{
Write-Host "Backup created but couldn't be downloaded."
}
}
else
{
Write-Host 'Unexpected return code when asking for backup:' ($Result.StatusCode) ($Result.StatusDescription)
}