Mehr als mir lieb ist, treffe ich Programme an, die Verknüpfungen auf den Public und/oder Benutzer Desktop schrieben. Dies bei Installationen genauso wie (teilweise) bei Updates. Um ungewollte Desktop Verknüpfungen, sobald sie auftauchen zu entfernen nutzte ich ein Proactive Remediation Funktion des Endpoint Managers. Dieses erlaubt es mir Desktop Verknüpfungen proaktiv zu entfernen.

Proactive Remediation Paket auf GitHub

Voraussetzungen - Lizenzen

  • Enterprise: Windows 10/11 Enterprise E3 or E5 (included in Microsoft 365 F3, E3, or E5)
  • Academic: Windows 10/11 Education A3 or A5 (included in Microsoft 365 A3 or A5)
  • Windows 10/11 Virtual Desktop Access (VDA) per user

Mehr Infos in den Microsoft Docs: Proactive remediations - Microsoft Endpoint Manager

Detection

Das Erkennungs-Script ist relativ simpel. In der ersten Zeile sind die zu überwachenden/entfernenden Verknüpfungen aufgelistet. Diese wiederum werden anschliessend auf dem Public Desktop oder aber auch auf allen Desktops gesucht. Bei der Erkennung einer Verknüpfung endet das Script mit dem Exit Code "1". Dadurch weiss der Endpoint Manager, dass er das Remediation Script ausführen und die Verknüpfungen löschen muss.

$Shortcuts2Remove = "Google Chrome.lnk", "VLC media player.lnk"
$DesktopPath = "C:\Users\Public\Desktop" # Public and User Desktop: "C:\Users\*\Desktop\*", for Public Desktop shortcuts only: "C:\Users\Public\Desktop" 
$ShortcutsOnClient = Get-ChildItem $DesktopPath
$ShortcutsUnwanted = $ShortcutsOnClient | Where-Object -FilterScript {$_.Name -in $Shortcuts2Remove }

if (!$ShortcutsUnwanted) {
	Write-Host "All good, no shortcuts found. "
	exit 0
}else{
	Write-Host "Unwanted shortcut detected."
	Exit 1
}
Code language: PowerShell (powershell)

Remediation

Im Remediation Script verwende ich dieselbe Logik bereits bei der Detection. Ebenfalls werden die ungewollten Desktop Verknüpfungen auf dem Public oder allen Desktops ausgelesen, daraufhin werden alle Dateien, welche auf dem lokalen Desktop erkannt wurden und im Array "Shortcuts2Remove " sind, gelöscht.

$Shortcuts2Remove = "Google Chrome.lnk", "VLC media player.lnk"
$DesktopPath = "C:\Users\Public\Desktop" # Public and User Desktop: "C:\Users\*\Desktop\*", for Public Desktop shortcuts only: "C:\Users\Public\Desktop" 
$ShortcutsOnClient = Get-ChildItem $DesktopPath

try{
    $($ShortcutsOnClient | Where-Object -FilterScript {$_.Name -in $Shortcuts2Remove }) | Remove-Item -Force
    Write-Host "Unwanted shortcut(s) removed."
}catch{
    Write-Error "Error removing shortcut(s)"
}
Code language: PowerShell (powershell)

Mit der oben aufgezeigten Erkennung entfernen wir ungewollte Desktop Verknüpfungen proaktiv und unkompliziert.

Einrichtung

Wenn dein Tenant die Lizenzvoraussetzungen erfüllt, kannst du unter "Reports > Endpoint analytics > Proactive remediations" ein Script Paket erstellen:

create Proactive remediations

Diesem gibst du einen Aussagekräftigen Namen und optional eine Beschreibung.

Proactive remediations Name and description

In den Einstellungen lädst du einerseits das detection.ps1 und andererseits das remediation.ps1 hoch. Beide Dateien kannst und sollst du je nach Bedarf anpassen.

Proactive remediations Settings

Den Scope tag musst du nur setzten, falls dieses Feature in deiner Umgebung aktiv genutzt wird.
Ansonsten kannst du mit der Zuweisung weiter machen und in dieser zudem definieren, wie oft die Erkennung gemacht werden soll. Ich habe hier stündlich gewählt, um Änderungen möglichst schnell abzufangen.

Proactive remediations Schedule

Möchtest du abgesehen von den unerwünschten Verknüpfungen doch einige Verteilen? Dann habe ich hier einen Beitrag für dich: Desktop Verknüpfung(en) / Icon mit Intune verwalten