$password = ConvertTo-SecureString 'Paper123!@#' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential('INTRANET\sysadmin', $password)

Write-Host "Recreating Sync-FromNAS Task..." -ForegroundColor Cyan
Write-Host ""

Invoke-Command -ComputerName 192.168.0.6 -Credential $cred -ScriptBlock {
    # Task parameters
    $taskName = "Sync-FromNAS"
    $scriptPath = "C:\Shares\test\scripts\Sync-FromNAS.ps1"
    $logPath = "C:\Shares\test\scripts\sync-from-nas.log"
    $taskUser = "INTRANET\sysadmin"
    $taskPassword = 'Paper123!@#'

    # Remove existing task if it exists
    Unregister-ScheduledTask -TaskName $taskName -Confirm:$false -ErrorAction SilentlyContinue

    Write-Host "[1] Creating task action..." -ForegroundColor Yellow
    $action = New-ScheduledTaskAction `
        -Execute "powershell.exe" `
        -Argument "-ExecutionPolicy Bypass -NonInteractive -File `"$scriptPath`"" `
        -WorkingDirectory "C:\Shares\test\scripts"

    Write-Host "[2] Creating task trigger (every 15 minutes)..." -ForegroundColor Yellow
    $trigger = New-ScheduledTaskTrigger `
        -Once `
        -At (Get-Date).AddMinutes(1) `
        -RepetitionInterval (New-TimeSpan -Minutes 15) `
        -RepetitionDuration ([TimeSpan]::MaxValue)

    Write-Host "[3] Creating task settings..." -ForegroundColor Yellow
    $settings = New-ScheduledTaskSettingsSet `
        -AllowStartIfOnBatteries `
        -DontStopIfGoingOnBatteries `
        -StartWhenAvailable `
        -ExecutionTimeLimit (New-TimeSpan -Minutes 30) `
        -RestartCount 3 `
        -RestartInterval (New-TimeSpan -Minutes 1)

    Write-Host "[4] Registering task as $taskUser..." -ForegroundColor Yellow
    Register-ScheduledTask `
        -TaskName $taskName `
        -Action $action `
        -Trigger $trigger `
        -Settings $settings `
        -User $taskUser `
        -Password $taskPassword `
        -RunLevel Highest `
        -Description "Sync test data and software updates between NAS and AD2" `
        -Force | Out-Null

    Write-Host "  [OK] Task created successfully" -ForegroundColor Green

    Write-Host ""
    Write-Host "[5] Verifying task..." -ForegroundColor Yellow
    $task = Get-ScheduledTask -TaskName $taskName
    Write-Host "  User: $($task.Principal.UserId)" -ForegroundColor White
    Write-Host "  State: $($task.State)" -ForegroundColor White

    Write-Host ""
    Write-Host "[6] Starting task now..." -ForegroundColor Yellow
    Start-ScheduledTask -TaskName $taskName
    Write-Host "  Waiting 25 seconds for sync to complete..." -ForegroundColor White
    Start-Sleep -Seconds 25

    Write-Host ""
    Write-Host "[7] Checking results..." -ForegroundColor Yellow
    $taskInfo = Get-ScheduledTaskInfo -TaskName $taskName
    Write-Host "  Last Run: $($taskInfo.LastRunTime)" -ForegroundColor White
    Write-Host "  Last Result: 0x$($taskInfo.LastTaskResult.ToString('X')) $(if ($taskInfo.LastTaskResult -eq 0) { '(SUCCESS)' } else { '(FAILED)' })" -ForegroundColor $(if ($taskInfo.LastTaskResult -eq 0) { "Green" } else { "Red" })
    Write-Host "  Next Run: $($taskInfo.NextRunTime)" -ForegroundColor White

    Write-Host ""
    Write-Host "[8] Last 20 lines of sync log..." -ForegroundColor Yellow
    if (Test-Path $logPath) {
        Get-Content $logPath | Select-Object -Last 20 | ForEach-Object { Write-Host "  $_" -ForegroundColor Gray }
    }
}

Write-Host ""
Write-Host "================================================" -ForegroundColor Cyan
Write-Host "Task Recreation Complete" -ForegroundColor Cyan
Write-Host "================================================" -ForegroundColor Cyan
