51 lines
1.5 KiB
PowerShell
51 lines
1.5 KiB
PowerShell
#Requires -RunAsAdministrator
|
|
<#
|
|
.SYNOPSIS
|
|
Post-reboot scanner cleanup. Registered as a SYSTEM logon task by
|
|
Register-ScannerCleanupTask; removes scanner installation paths, writes
|
|
logs-ready.json for GuruRMM to pull, then unregisters itself.
|
|
|
|
Run directly to trigger cleanup immediately without waiting for the task:
|
|
.\Invoke-ScannerCleanup.ps1
|
|
#>
|
|
|
|
$Base = 'C:\GuruScan'
|
|
$stateFile = "$Base\cleanup-state.json"
|
|
$state = @{ scan_id = ''; log_root = '' }
|
|
|
|
if (Test-Path $stateFile) {
|
|
try { $state = Get-Content $stateFile -Raw | ConvertFrom-Json } catch {}
|
|
}
|
|
|
|
$scannerPaths = @(
|
|
'C:\EmsisoftCmd',
|
|
'C:\AdwCleaner',
|
|
'C:\ProgramData\HitmanPro',
|
|
'C:\ProgramData\HitmanPro.Alert'
|
|
)
|
|
|
|
foreach ($p in $scannerPaths) {
|
|
if (Test-Path $p) {
|
|
Remove-Item -Path $p -Recurse -Force -ErrorAction SilentlyContinue
|
|
}
|
|
}
|
|
|
|
# Remove scanner download EXEs (leave C:\GuruScan\ itself intact)
|
|
$downloadsPath = "$Base\downloads"
|
|
if (Test-Path $downloadsPath) {
|
|
Remove-Item -Path $downloadsPath -Recurse -Force -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
# Flag logs as ready for GuruRMM to pull
|
|
$zipPath = "$Base\reports\$($state.scan_id).zip"
|
|
@{
|
|
scan_id = $state.scan_id
|
|
log_root = $state.log_root
|
|
zip_path = $zipPath
|
|
cleaned_at = (Get-Date).ToUniversalTime().ToString('o')
|
|
} | ConvertTo-Json | Set-Content "$Base\logs-ready.json" -Encoding UTF8
|
|
|
|
Remove-Item -Path $stateFile -Force -ErrorAction SilentlyContinue
|
|
|
|
Unregister-ScheduledTask -TaskName 'GuruRMM-ScannerCleanup' -Confirm:$false -ErrorAction SilentlyContinue
|