Загрузка данных


& {
    $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
}