Files
IVANTI/schedule-install-agent-task/CreateTask.ps1
2025-10-31 08:38:13 +01:00

52 lines
2.1 KiB
PowerShell

<#
.SYNOPSIS
Copies InstallIvantiAgent.ps1 to C:\Windows\Temp and creates a scheduled task to run it at startup with a small delay.
.DESCRIPTION
1) Detects the script directory using $PSScriptRoot.
2) Copies InstallIvantiAgent.ps1 to C:\Windows\Temp.
3) Creates a scheduled task that runs at startup with a 2-minute delay.
#>
# 1) Define script paths
$localScript = Join-Path -Path $PSScriptRoot -ChildPath "InstallIvantiAgent.ps1"
$destination = "C:\Windows\Temp\InstallIvantiAgent.ps1"
# 2) Copy script to C:\Windows\Temp
Write-Host "Copying InstallIvantiAgent.ps1 to $destination"
Copy-Item -Path $localScript -Destination $destination -Force
# 3) Define the scheduled task name
$taskName = "IvantiInstallAtStartup"
Write-Host "Creating scheduled task '$taskName' to run at startup with a delay..."
# 4) Define the action: Run the script silently with PowerShell
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-NoProfile -ExecutionPolicy Bypass -File `"$destination`""
# 5) Run as SYSTEM with highest privileges
$principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -RunLevel Highest
# 6) Trigger: Run at startup with a 2-minute delay
# Définir une valeur aléatoire entre 2 et 59 minutes
$randomDelay = Get-Random -Minimum 2 -Maximum 60
# Convertir en format ISO 8601 (PTXM)
$delayString = "PT${randomDelay}M"
# Créer le déclencheur avec un délai aléatoire
$trigger = New-ScheduledTaskTrigger -AtStartup
$trigger.Delay = $delayString # Appliquer le délai aléatoire
# 7) Check if the task already exists and remove it before creating a new one
if (Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue) {
Write-Host "Task '$taskName' already exists. Deleting it..."
Unregister-ScheduledTask -TaskName $taskName -Confirm:$false
}
# 8) Create and register the scheduled task
$scheduledTask = New-ScheduledTask -Action $action -Trigger $trigger -Principal $principal
Register-ScheduledTask -TaskName $taskName -InputObject $scheduledTask | Out-Null
Write-Host "Scheduled task '$taskName' created successfully. It will run at startup with a 2-minute delay."