Files
Kawa-s-Bloat-Remover/Deploy-ScheduledTask.ps1
2026-07-21 09:30:23 +02:00

95 lines
2.9 KiB
PowerShell

# Deploy bloatware removal as scheduled task - runs silently at startup or on schedule
# Run as Administrator
#Requires -RunAsAdministrator
param(
[Parameter(Mandatory=$false)]
[ValidateSet('Startup', 'Weekly', 'Monthly')]
[string]$Trigger = 'Startup',
[Parameter(Mandatory=$false)]
[string]$ScriptPath = (Split-Path -Parent $MyInvocation.MyCommand.Path) + '\Remove-AllBloat.ps1'
)
$ErrorActionPreference = 'SilentlyContinue'
# Task details
$TaskName = "Remove Bloatware - Silent"
$TaskPath = "\Maintenance\"
$Description = "Silently remove manufacturer bloatware (HP, Lenovo, ASUS, Dell)"
Write-Host "[*] Creating scheduled task for bloatware removal..."
# Create action
$Action = New-ScheduledTaskAction `
-Execute "powershell.exe" `
-Argument "-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File `"$ScriptPath`" -ErrorAction SilentlyContinue"
# Create trigger based on parameter
if ($Trigger -eq 'Startup') {
$TaskTrigger = New-ScheduledTaskTrigger -AtStartup
Write-Host "[+] Trigger: At System Startup"
} elseif ($Trigger -eq 'Weekly') {
$TaskTrigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Sunday -At 2:00AM
Write-Host "[+] Trigger: Weekly (Sunday 2:00 AM)"
} else {
$TaskTrigger = New-ScheduledTaskTrigger -Monthly -DaysOfMonth 1 -At 2:00AM
Write-Host "[+] Trigger: Monthly (1st of month at 2:00 AM)"
}
# Create principal (run with highest privileges)
$Principal = New-ScheduledTaskPrincipal `
-UserId "SYSTEM" `
-RunLevel Highest `
-ProcessTokenSidType Default
# Create settings
$Settings = New-ScheduledTaskSettingsSet `
-AllowStartIfOnBatteries `
-DontStopIfGoingOnBatteries `
-StartWhenAvailable `
-RunOnlyIfNetworkAvailable $false `
-MultipleInstances IgnoreNew
# Register the task
try {
# Remove existing task if it exists
Unregister-ScheduledTask -TaskName $TaskName -TaskPath $TaskPath -Confirm:$false -ErrorAction SilentlyContinue
Register-ScheduledTask `
-TaskName $TaskName `
-TaskPath $TaskPath `
-Action $Action `
-Trigger $TaskTrigger `
-Principal $Principal `
-Settings $Settings `
-Description $Description `
-Force | Out-Null
Write-Host "[+] Scheduled task created successfully."
Write-Host "[+] Task will run: $Trigger"
Write-Host "[+] Script: $ScriptPath"
} catch {
Write-Host "[-] Error creating task: $_" -ForegroundColor Red
exit 1
}
# Verify task was created
$Task = Get-ScheduledTask -TaskName $TaskName -TaskPath $TaskPath -ErrorAction SilentlyContinue
if ($Task) {
Write-Host "[+] Task verified and ready."
Write-Host ""
Write-Host "Task Details:"
Write-Host " - Name: $($Task.TaskName)"
Write-Host " - Path: $($Task.TaskPath)"
Write-Host " - Status: $($Task.State)"
} else {
Write-Host "[-] Failed to verify task creation." -ForegroundColor Red
exit 1
}
Write-Host ""
Write-Host "[+] Deployment complete!"