81 lines
3.6 KiB
PowerShell
81 lines
3.6 KiB
PowerShell
$password = ConvertTo-SecureString 'Paper123!@#' -AsPlainText -Force
|
|
$cred = New-Object System.Management.Automation.PSCredential('INTRANET\sysadmin', $password)
|
|
|
|
Write-Host "================================================" -ForegroundColor Cyan
|
|
Write-Host "Fixing Sync Task User Account" -ForegroundColor Cyan
|
|
Write-Host "================================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
|
|
Invoke-Command -ComputerName 192.168.0.6 -Credential $cred -ScriptBlock {
|
|
Write-Host "[1] Checking current task configuration..." -ForegroundColor Yellow
|
|
$task = Get-ScheduledTask -TaskName "Sync-FromNAS"
|
|
Write-Host " Current user: $($task.Principal.UserId)" -ForegroundColor White
|
|
Write-Host " Run level: $($task.Principal.RunLevel)" -ForegroundColor White
|
|
|
|
Write-Host ""
|
|
Write-Host "[2] Reconfiguring task to run as sysadmin..." -ForegroundColor Yellow
|
|
|
|
# Get the current task definition
|
|
$taskAction = $task.Actions[0]
|
|
$taskTrigger = $task.Triggers[0]
|
|
$taskSettings = $task.Settings
|
|
|
|
# Create password for sysadmin
|
|
$taskPassword = 'Paper123!@#'
|
|
|
|
# Unregister old task
|
|
Unregister-ScheduledTask -TaskName "Sync-FromNAS" -Confirm:$false
|
|
|
|
# Register new task with sysadmin user
|
|
$action = New-ScheduledTaskAction -Execute $taskAction.Execute -Argument $taskAction.Arguments -WorkingDirectory $taskAction.WorkingDirectory
|
|
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 15) -RepetitionDuration ([TimeSpan]::MaxValue)
|
|
$settings = New-ScheduledTaskSettingsSet `
|
|
-AllowStartIfOnBatteries `
|
|
-DontStopIfGoingOnBatteries `
|
|
-StartWhenAvailable `
|
|
-ExecutionTimeLimit (New-TimeSpan -Minutes 30)
|
|
|
|
Register-ScheduledTask `
|
|
-TaskName "Sync-FromNAS" `
|
|
-Action $action `
|
|
-Trigger $trigger `
|
|
-Settings $settings `
|
|
-User "INTRANET\sysadmin" `
|
|
-Password $taskPassword `
|
|
-RunLevel Highest `
|
|
-Force | Out-Null
|
|
|
|
Write-Host " [OK] Task reconfigured to run as INTRANET\sysadmin" -ForegroundColor Green
|
|
|
|
Write-Host ""
|
|
Write-Host "[3] Verifying new configuration..." -ForegroundColor Yellow
|
|
$newTask = Get-ScheduledTask -TaskName "Sync-FromNAS"
|
|
Write-Host " New user: $($newTask.Principal.UserId)" -ForegroundColor White
|
|
Write-Host " State: $($newTask.State)" -ForegroundColor White
|
|
|
|
Write-Host ""
|
|
Write-Host "[4] Testing sync task..." -ForegroundColor Yellow
|
|
Start-ScheduledTask -TaskName "Sync-FromNAS"
|
|
Write-Host " Task started - waiting 20 seconds..." -ForegroundColor White
|
|
Start-Sleep -Seconds 20
|
|
|
|
Write-Host ""
|
|
Write-Host "[5] Checking sync log..." -ForegroundColor Yellow
|
|
if (Test-Path "C:\Shares\test\scripts\sync-from-nas.log") {
|
|
$lastLog = Get-Content "C:\Shares\test\scripts\sync-from-nas.log" | Select-Object -Last 15
|
|
$lastLog | ForEach-Object { Write-Host " $_" -ForegroundColor Gray }
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "[6] Checking task status..." -ForegroundColor Yellow
|
|
$taskInfo = Get-ScheduledTaskInfo -TaskName "Sync-FromNAS"
|
|
Write-Host " Last Run: $($taskInfo.LastRunTime)" -ForegroundColor White
|
|
Write-Host " Last Result: 0x$($taskInfo.LastTaskResult.ToString('X'))" -ForegroundColor $(if ($taskInfo.LastTaskResult -eq 0) { "Green" } else { "Red" })
|
|
Write-Host " Next Run: $($taskInfo.NextRunTime)" -ForegroundColor White
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "================================================" -ForegroundColor Cyan
|
|
Write-Host "Task User Fix Complete" -ForegroundColor Cyan
|
|
Write-Host "================================================" -ForegroundColor Cyan
|