I mitt miljø etterlot overgangen fra lokaladministrator til standardbruker seg et spor av “shadow IT”—Zoom, personlige verktøy og gammel programvare som ikke burde være der.
Jeg sjekker ikke hver enkelt enhet manuelt. I stedet har jeg bygget en arbeidsflyt som finner disse appene på tvers av hele flåten og fjerner dem automatisk.
Kartlegging: Jakt i hele flåten med KQL
Før jeg kan fjerne noe, må jeg vite nøyaktig hvor problemene ligger. Jeg bruker Microsoft Defender for Endpoint (MDE) for å finne disse appene på sekunder. I stedet for å bla i portalen, kjører jeg en KQL-spørring i Advanced Hunting for å identifisere høyrisiko-programvare:
// Min spørring for kartlegging (Eksempel)
DeviceTvmSoftwareInventory
| where SoftwareName has_any ("utorrent", "anydesk", "ccleaner")
| project DeviceName, SoftwareName, SoftwareVersion
Dette gir meg “hitlisten” min. For en mer aggressiv tilnærming som også håndterer EOL- og EOS-programvare, bruker jeg arbeidsflyten for Jakten på zombie-programvare.
Automatisering: Intune Proactive Remediation
Når jeg har målene klare, bruker jeg Intune Proactive Remediation. Oppsettet mitt består av to skript:
- Deteksjon - Sjekker om appen finnes (exit 1 = funnet, som trigger fjerning)
- Utbedring (Remediation) - Lydløs fjerning
Min konfigurasjon
Jeg målretter apper via registeret, WMI eller programlisten. Vanligvis konfigurerer jeg deteksjonen ved å sette disse variablene:
$AppDisplayName = "Zoom"
$AppPublisher = ""
$AppProductCode = "{86B70A45-00A6-4CBD-97A8-464A1254D179}"
$UsePartialMatch = $true
Komplett skript: Detect-UnwantedApp.ps1
Utbedringen (Remediation)
Når appen er oppdaget, henter utbedringsskriptet mitt avinstalleringsstrengen fra registeret eller bruker MSI-produktkoden for å fjerne appen lydløst.
Komplett skript: Remove-UnwantedApp.ps1
Detaljer om utrulling
Slik har jeg satt det opp i min tenant:
- Intune → Enheter → Utbedringer
- Opprett skriptpakke: “Fjern [AppNavn]”
- Innstillinger:
- Kjør skript i 64-bit PowerShell: Ja
- Kjør med påloggede legitimasjoner: Nei (kjører som SYSTEM)
- Tidsplan: Daglig (jeg vil ha disse bort så fort som mulig)
Erfaringer og avveininger
- Pilot først - Jeg kjører alltid deteksjon på en pilotgruppe før jeg aktiverer utbedring.
- Produktkoder endres - Jeg har lært at ulike versjoner ofte har ulike koder; KQL hjelper meg å finne alle variantene først.
- Risiko med delvis treff - Jeg bruker
$UsePartialMatch = $truemed forsiktighet for å unngå å fjerne tilleggsprogrammer (plugins) som jeg faktisk vil beholde.