Add fixnetworkshare, winrm-setup-package, udc remote-execution suites
- NetworkDriveManager.ps1: S: drive repair utility - winrm-setup-package: Invoke-RemoteTask helper + Setup-WinRM.bat + HTML guide - remote-execution/udc: UDC_Update.ps1 and batch wrappers for updating DNC controllers on shop-floor PCs - Invoke-RemoteMaintenance.ps1: substantial rework (~1650 lines) - Schedule-Maintenance and complete-asset minor updates - Bump edncfix gitlink to v1.6.0 (2748bfa) - .gitignore: block inventory.csv/xlsx (CUI) and logs_*.txt (per-host logs) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -13,8 +13,11 @@ 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)
|
||||
- ALL scripts must be in the SAME folder:
|
||||
Invoke-RemoteMaintenance.ps1
|
||||
Schedule-Maintenance.ps1
|
||||
Export-PCList.ps1
|
||||
shopfloor-pcs.txt (or your PC list file)
|
||||
|
||||
|
||||
============================================================
|
||||
@@ -34,53 +37,92 @@ PARAMETERS
|
||||
|
||||
|
||||
============================================================
|
||||
USAGE
|
||||
STEP 1: Save Credentials (one time)
|
||||
============================================================
|
||||
|
||||
1. SAVE CREDENTIALS (one time, does not require admin)
|
||||
.\Schedule-Maintenance.ps1 -SaveCredential -Username "DS\570005354" -Password "MyP@ssw0rd"
|
||||
|
||||
.\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"
|
||||
- Encrypted with AES-256 key
|
||||
- Works from normal or admin PowerShell
|
||||
- Stored in .creds\ folder (not plaintext)
|
||||
- Re-run if your password changes
|
||||
|
||||
|
||||
============================================================
|
||||
LOGS
|
||||
STEP 2: Generate PC List
|
||||
============================================================
|
||||
|
||||
.\logs\maintenance-YYYY-MM-DD_HHMMSS-TaskName.log
|
||||
# All shopfloor PCs from API
|
||||
.\Export-PCList.ps1
|
||||
|
||||
# Filter by type
|
||||
.\Export-PCList.ps1 -PcType Shopfloor
|
||||
|
||||
# Single PC for testing
|
||||
"G63TVG04ESF" | Out-File -FilePath ".\test-reboot.txt" -Encoding UTF8
|
||||
|
||||
|
||||
============================================================
|
||||
STEP 3: Run or Schedule
|
||||
============================================================
|
||||
|
||||
RUN IMMEDIATELY (no admin needed):
|
||||
.\Schedule-Maintenance.ps1 -ComputerListFile ".\shopfloor-pcs.txt" -Task Reboot
|
||||
|
||||
SCHEDULE ONE-TIME (admin required):
|
||||
.\Schedule-Maintenance.ps1 -CreateScheduledTask -ComputerListFile ".\shopfloor-pcs.txt" -Task Reboot -TaskFrequency Once -TaskTime "00:01" -TaskDate "2026-02-22"
|
||||
|
||||
SCHEDULE RECURRING (admin required):
|
||||
.\Schedule-Maintenance.ps1 -CreateScheduledTask -ComputerListFile ".\shopfloor-pcs.txt" -Task Reboot -TaskFrequency Weekly -TaskDay Sunday -TaskTime "00:01"
|
||||
|
||||
|
||||
============================================================
|
||||
CHECKING RESULTS
|
||||
============================================================
|
||||
|
||||
AFTER A SCHEDULED RUN:
|
||||
Get-Content ".\logs\LAST-RUN-SUMMARY.txt"
|
||||
|
||||
FULL LOG (most recent):
|
||||
Get-ChildItem ".\logs\" -Filter "maintenance-*-Reboot.log" | Sort-Object LastWriteTime -Descending | Select-Object -First 1 | Get-Content
|
||||
|
||||
CHECK IF TASK RAN:
|
||||
Get-ScheduledTask -TaskName "ShopfloorMaintenance-Reboot" | Get-ScheduledTaskInfo
|
||||
|
||||
LastTaskResult = 0 means success
|
||||
Anything else means it errored before writing logs
|
||||
|
||||
LOGS LOCATION:
|
||||
.\logs\ (inside your scripts folder)
|
||||
|
||||
|
||||
============================================================
|
||||
MANAGING SCHEDULED TASKS
|
||||
============================================================
|
||||
|
||||
# List maintenance tasks
|
||||
Get-ScheduledTask | Where-Object { $_.TaskName -like "ShopfloorMaintenance*" }
|
||||
|
||||
# Run now (don't wait for schedule)
|
||||
Start-ScheduledTask -TaskName "ShopfloorMaintenance-Reboot"
|
||||
|
||||
# Delete a task
|
||||
Unregister-ScheduledTask -TaskName "ShopfloorMaintenance-Reboot"
|
||||
|
||||
# Or use: Task Scheduler GUI (taskschd.msc)
|
||||
|
||||
|
||||
============================================================
|
||||
AVAILABLE TASKS
|
||||
============================================================
|
||||
|
||||
Reboot, DISM, SFC, OptimizeDisk, DiskCleanup,
|
||||
ClearUpdateCache, ClearBrowserCache, RestartSpooler,
|
||||
FlushDNS, RestartWinRM, SetTimezone, SyncTime,
|
||||
UpdateEMxAuthToken, DeployUDCWebServerConfig,
|
||||
UpdateDNCMXHosts,
|
||||
InstallDashboard, InstallLobbyDisplay,
|
||||
UninstallDashboard, UninstallLobbyDisplay
|
||||
|
||||
|
||||
============================================================
|
||||
@@ -88,13 +130,24 @@ TROUBLESHOOTING
|
||||
============================================================
|
||||
|
||||
"No saved credentials found"
|
||||
-> Run -SaveCredential with -Username and -Password
|
||||
-> .\Schedule-Maintenance.ps1 -SaveCredential -Username "DS\user" -Password "pass"
|
||||
|
||||
"Access is denied" when scheduling
|
||||
-> Right-click PowerShell -> Run as Administrator
|
||||
|
||||
"No credentials provided. Exiting."
|
||||
-> GUI prompt failed. Use -Username and -Password flags
|
||||
-> Use -Username and -Password flags instead of GUI prompt
|
||||
|
||||
No logs folder / empty logs
|
||||
-> Task may not have run yet. Check:
|
||||
Get-ScheduledTask -TaskName "ShopfloorMaintenance-Reboot" | Get-ScheduledTaskInfo
|
||||
|
||||
Password changed
|
||||
-> Re-run -SaveCredential with new password
|
||||
-> .\Schedule-Maintenance.ps1 -SaveCredential -Username "DS\user" -Password "newpass"
|
||||
|
||||
NOTE ABOUT "Running as AEROAD\SSO":
|
||||
This is normal. The scheduled task runs as your Windows login.
|
||||
It still uses your SAVED credentials for WinRM connections
|
||||
to the remote shopfloor PCs. Two separate accounts:
|
||||
1. Your Windows login = runs the script
|
||||
2. Saved credentials = connects to remote PCs
|
||||
|
||||
Reference in New Issue
Block a user