zscripts-token-savers/setup_backup_schedule.ps1
KellyMichels 3546a12564 Evomedia.net Token Savers - initial public release
Config-driven PowerShell scripts to run infrastructure tasks (deploy, restart, backup, diagnostics) yourself instead of having an AI agent orchestrate them, to save agent tokens. Environment specifics live in zconfig.json (gitignored).
2026-07-15 21:33:22 -05:00

79 lines
3.0 KiB
PowerShell

# Evomedia.net Token Savers — https://github.com/kellymichels/zscripts-token-savers
# Created by Kelly Michels · dev@evomedia.net
# Licensed under the MIT License. See LICENSE.
# setup_backup_schedule.ps1 — create a scheduled task for daily backups + OneDrive sync
#
# Usage:
# Right-click PowerShell -> "Run as Administrator"
# Then run: .\setup_backup_schedule.ps1
#
# This creates a task that runs zbackup_and_sync.ps1 every day at 2:00 AM
#Requires -RunAsAdministrator
$ErrorActionPreference = "Stop"
. (Join-Path $PSScriptRoot "ZHelpers.ps1")
$cfg = Get-ZConfig
$ScriptPath = Join-Path $cfg.paths.scriptsRoot "zbackup_and_sync.ps1"
$TaskName = "ZScripts-Backup-And-Sync"
Write-Host ""
Write-Host "Setting up scheduled backup task..." -ForegroundColor Cyan
Write-Host ""
if (-not (Test-Path -LiteralPath $ScriptPath)) {
Write-Host "ERROR: Script not found: $ScriptPath" -ForegroundColor Red
Write-Host " Check paths.scriptsRoot in zconfig.json" -ForegroundColor DarkGray
exit 1
}
$existingTask = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
if ($existingTask) {
Write-Host "Task already exists: $TaskName" -ForegroundColor Yellow
Write-Host ""
$deleteChoice = Read-Host "Delete and recreate? (y/n)"
if ($deleteChoice -eq "y") {
Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false
Write-Host "Deleted existing task." -ForegroundColor Green
} else {
Write-Host "Keeping existing task. Exiting." -ForegroundColor Yellow
exit 0
}
}
$trigger = New-ScheduledTaskTrigger -Daily -At "02:00"
$action = New-ScheduledTaskAction `
-Execute "powershell.exe" `
-Argument "-ExecutionPolicy Bypass -NoProfile -File `"$ScriptPath`""
$settings = New-ScheduledTaskSettingsSet `
-AllowStartIfOnBatteries `
-DontStopIfGoingOnBatteries `
-StartWhenAvailable `
-Compatibility Win8
Write-Host "Creating scheduled task: $TaskName" -ForegroundColor Yellow
Register-ScheduledTask `
-TaskName $TaskName `
-Trigger $trigger `
-Action $action `
-Settings $settings `
-Description "Daily backup of all projects + OneDrive sync. Runs at 2:00 AM daily." `
-Force
Write-Host ""
Write-Host "Success! Scheduled task created." -ForegroundColor Green
Write-Host ""
Write-Host "Task Details:" -ForegroundColor Cyan
Write-Host " Name: $TaskName" -ForegroundColor Gray
Write-Host " Schedule: Daily at 2:00 AM" -ForegroundColor Gray
Write-Host " Action: $ScriptPath" -ForegroundColor Gray
Write-Host ""
Write-Host "To manage the task:" -ForegroundColor Gray
Write-Host " View: Get-ScheduledTask -TaskName '$TaskName'" -ForegroundColor DarkGray
Write-Host " Run now: Start-ScheduledTask -TaskName '$TaskName'" -ForegroundColor DarkGray
Write-Host " Disable: Disable-ScheduledTask -TaskName '$TaskName'" -ForegroundColor DarkGray
Write-Host " Delete: Unregister-ScheduledTask -TaskName '$TaskName'" -ForegroundColor DarkGray
Write-Host ""