95 lines
2.9 KiB
PowerShell
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!"
|