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:

  1. Deteksjon - Sjekker om appen finnes (exit 1 = funnet, som trigger fjerning)
  2. 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:

  1. IntuneEnheterUtbedringer
  2. Opprett skriptpakke: “Fjern [AppNavn]”
  3. Innstillinger:
    • Kjør skript i 64-bit PowerShell: Ja
    • Kjør med påloggede legitimasjoner: Nei (kjører som SYSTEM)
  4. 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 = $true med forsiktighet for å unngå å fjerne tilleggsprogrammer (plugins) som jeg faktisk vil beholde.

Relaterte lenker