& {
$ErrorActionPreference = 'Stop'
$backupZip = 'G:\windows-backup-pull.zip'
$backupKit = 'G:\windows-backup-pull-update-' + (Get-Date -Format 'yyyyMMdd-HHmmss')
$backupInstall = Join-Path $env:ProgramData 'CTB\BackupPull'
$backupSettings = Join-Path $backupInstall 'settings.json'
Expand-Archive -LiteralPath $backupZip -DestinationPath $backupKit
if (Test-Path -LiteralPath $backupSettings) {
powershell.exe -NoProfile -ExecutionPolicy Bypass `
-File "$backupKit\Update-BackupPull.ps1" `
-InstallationRoot "$backupInstall" -EkgRetentionDays 14
}
else {
$backupDestination = Read-Host 'Папка для бэкапов, например G:\Backups'
powershell.exe -NoProfile -ExecutionPolicy Bypass `
-File "$backupKit\Initialize-BackupPull.ps1" `
-DestinationRoot "$backupDestination" -EveryHours 1
}
if ($LASTEXITCODE -ne 0) {
throw 'Установка или обновление завершились ошибкой. Пришли вывод.'
}
powershell.exe -NoProfile -ExecutionPolicy Bypass `
-File "$backupInstall\Register-BackupTask.ps1" `
-SettingsPath "$backupSettings" -EveryHours 1
if ($LASTEXITCODE -ne 0) {
throw 'Не удалось настроить расписание. Пришли вывод.'
}
Enable-ScheduledTask -TaskName 'CTB-S3-BackupPull' | Out-Null
Start-ScheduledTask -TaskName 'CTB-S3-BackupPull'
Get-Content -LiteralPath $backupSettings -Raw |
ConvertFrom-Json |
Select-Object DestinationRoot, EkgRetentionDays
Get-ScheduledTask -TaskName 'CTB-S3-BackupPull' |
Select-Object TaskName, State
}