Når Mozilla Firefox markeres som usanksjonert i vårt miljø, er mitt neste trekk å rydde opp i eksisterende installasjoner på alle administrerte enheter.
Før vi standardiserte nettleserne våre, stod brukerne fritt til å installere det de ville, noe som førte til at Firefox ble spredt over hundrevis av maskiner. Jeg kaster ikke bort tid på manuell opprydding; jeg har automatisert hele prosessen.
Kartlegging i stor skala med KQL
Jeg starter med å få et klart bilde av omfanget. Jeg bruker KQL (Kusto Query Language) i Defender Advanced Hunting for å se nøyaktig hvilke versjoner som finnes og hvor mange enheter som er berørt:
// Min spørring for Firefox-kartlegging
DeviceTvmSoftwareInventory
| where SoftwareName contains "Firefox"
| summarize DeviceCount = dcount(DeviceName), Versions = make_set(SoftwareVersion) by SoftwareName
| order by DeviceCount desc
Denne spørringen gir meg umiddelbar oversikt over antall enheter og versjoner, noe jeg bruker for å målrette Intune-utbedringene mine effektivt.
Strategien: Automatisere oppryddingen
Jeg bruker Intune Proactive Remediation med et to-skripts system:
- Deteksjon: Finner Firefox i registeret, Program Files og brukerprofiler.
- Utbedring (Remediation): Fjerner alt—prosesser, filer, snarveier, tjenester og planlagte oppgaver.
Deteksjonslogikk
Skriptet mitt skanner tre hovedområder hvor Firefox liker å gjemme seg:
- Registeret - 64-bit/32-bit avinstalleringsnøkler og per-bruker installasjoner.
- Program Files - Standard installasjonsplasseringer.
- Brukerprofiler - AppData-mapper.
$findings = @()
$uninstallPaths = @(
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall",
"HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall",
"HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
)
foreach ($path in $uninstallPaths) {
if (Test-Path $path) {
$apps = Get-ItemProperty "$path\*" -ErrorAction SilentlyContinue |
Where-Object { $_.DisplayName -like "*Firefox*" }
foreach ($app in $apps) {
$findings += "Registry: $($app.DisplayName)"
}
}
}
if ($findings.Count -gt 0) { exit 1 } else { exit 0 }
Komplett skript: firefox-removal-detection.ps1
Selve fjerningen: Remediation
Utbedringsskriptet mitt er designet for å være grundig. Det stopper alle aktive prosesser før det prøver å avinstallere, for å sikre at ingen filer er låst.
- Stopp prosesser - Firefox, plugin-container og oppdateringsprogrammer.
- Avinstaller - Bruker avinstalleringsstrengen fra registeret (håndterer både helper.exe og msiexec).
- Opprydding - Sletter mapper i Program Files, ProgramData og AppData.
- Siste finpuss - Fjerner snarveier, tjenesten MozillaMaintenance og oppdateringsoppgaver.
# Min liste over prosesser som skal stoppes
$firefoxProcesses = @("firefox", "firefox-esr", "plugin-container", "crashreporter", "updater")
foreach ($proc in $firefoxProcesses) {
Get-Process -Name $proc -ErrorAction SilentlyContinue | Stop-Process -Force
}
Komplett skript: firefox-removal-remediation.ps1
Resultat og verifisering
Jeg overvåker fremdriften direkte i Intune-portalen under Devices > Scripts and remediations.
Suksess betyr at enhetene får status “fixed”. Jeg sjekker også mine egne logger på C:\ProgramData\Eriteach\Logs\ hvis jeg ser installasjoner som krever en manuell titt.
Erfaringer
- Brukerprofiler - Skriptet rydder alle profiler på maskinen. Jeg varsler alltid brukerne om at bokmerker og lagrede passord vil forsvinne.
- Tvangslukking - Siden jeg tvinger prosessen til å avslutte, kjører jeg denne utbedringen i vedlikeholdsvinduer for å minimere forstyrrelser.
Relaterte lenker
- Auto-oppdater Firefox med Intune - Min arbeidsflyt når jeg skal beholde Firefox, men holde den oppdatert.
- Intune Remediations oversikt
- Microsoft Defender programvareoversikt