============================================================ Schedule-Maintenance.ps1 - Documentation ============================================================ Wrapper script that stores credentials securely and runs Invoke-RemoteMaintenance.ps1 unattended or on a schedule via Windows Task Scheduler. ============================================================ REQUIREMENTS ============================================================ - PowerShell 5.1+ - Run as Administrator (required for scheduling only) - Invoke-RemoteMaintenance.ps1 in the same folder - A PC list text file (one hostname per line) ============================================================ PARAMETERS ============================================================ -SaveCredential Save credentials for unattended use -Username Domain\username (use with -SaveCredential) -Password Password (use with -SaveCredential) -Task Maintenance task name (e.g. Reboot) -ComputerListFile Path to text file with PC hostnames -CreateScheduledTask Register a Windows Scheduled Task -TaskFrequency Daily, Weekly, or Once (default: Weekly) -TaskDay Day of week (default: Sunday) -TaskTime Time in HH:mm format (default: 03:00) -TaskDate Specific date for Once (e.g. 2026-02-22) ============================================================ USAGE ============================================================ 1. SAVE CREDENTIALS (one time, does not require admin) .\Schedule-Maintenance.ps1 -SaveCredential -Username "DS\570005354" -Password "MyP@ssw0rd" - Encrypted with Windows DPAPI - Only your user account on this machine can decrypt - Re-run if your password changes 2. RUN IMMEDIATELY (does not require admin) .\Schedule-Maintenance.ps1 -ComputerListFile ".\shopfloor-pcs.txt" -Task Reboot 3. SCHEDULE A ONE-TIME TASK (requires admin) # Reboot one PC today at 3:00 PM .\Schedule-Maintenance.ps1 -CreateScheduledTask -ComputerListFile ".\test-reboot.txt" -Task Reboot -TaskFrequency Once -TaskTime "15:00" -TaskDate "2026-02-19" # Reboot all PCs Sunday Feb 22 at 12:01 AM .\Schedule-Maintenance.ps1 -CreateScheduledTask -ComputerListFile ".\shopfloor-pcs.txt" -Task Reboot -TaskFrequency Once -TaskTime "00:01" -TaskDate "2026-02-22" 4. SCHEDULE A RECURRING TASK (requires admin) # Every Sunday at 12:01 AM .\Schedule-Maintenance.ps1 -CreateScheduledTask -ComputerListFile ".\shopfloor-pcs.txt" -Task Reboot -TaskFrequency Weekly -TaskDay Sunday -TaskTime "00:01" # Every day at 2:00 AM .\Schedule-Maintenance.ps1 -CreateScheduledTask -ComputerListFile ".\shopfloor-pcs.txt" -Task DiskCleanup -TaskFrequency Daily -TaskTime "02:00" 5. MANAGE SCHEDULED TASKS Get-ScheduledTask | Where-Object { $_.TaskName -like "ShopfloorMaintenance*" } Start-ScheduledTask -TaskName "ShopfloorMaintenance-Reboot" Unregister-ScheduledTask -TaskName "ShopfloorMaintenance-Reboot" ============================================================ LOGS ============================================================ .\logs\maintenance-YYYY-MM-DD_HHMMSS-TaskName.log ============================================================ TROUBLESHOOTING ============================================================ "No saved credentials found" -> Run -SaveCredential with -Username and -Password "Access is denied" when scheduling -> Right-click PowerShell -> Run as Administrator "No credentials provided. Exiting." -> GUI prompt failed. Use -Username and -Password flags Password changed -> Re-run -SaveCredential with new password