Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget

Einleitung

Die IT der Unternehmen steht immer häufiger vor der Herausforderung Anwendungen auf einem aktuellen Stand zu halten. Die Zeit während der Quarantäne in der Corona-Pandemie-Zeit hat diese Hürden nicht gemindert. Ganz im Gegenteil, für einige waren die Systeme garnicht mehr erreichbar, oder verwaltbar.

Und gerade in dieser Zeit, wo die Konferenztools einen enormen Boom hatten, fanden sich ganz schnell Installationen auf den Systemen wieder. Aber wie so oft, einmal installiert und nie mehr aktualisiert. Allen voran Tools, die ganz ohne administrative Rechte installiert werden können. Zum Beispiel Webex oder Zoom.

Das Problem an diesen Anwendungen ist, dass man über die administrative Installationsrutine nicht, oder nur sehr schwer an die Anwendungen ran kommt. Denn diese sind bekanntlich irgendwo unter

                C:\Users\<Username>\AppData\Roaming

installiert.

Es wäre schön, wenn das System eigenständig einmal am Tag prüft, ob es für eine Anwendung – nehmen wir zum Beispiel Zoom – eine Aktualisierung gibt und diese selbstständig auf den neusten Stand bringt. Dann schauen wir mal was wir im Portfolio von Microsoft 365 zur Auswahl haben und einsetzen können.

Intune Plan 1 – für die Geräteverwaltung

Winget – als Package Manager

Proactive Remediations – für die regelmäßige Ausführung

Defender for Endpoint (optional) – erkennen von Schwachstellen in Applikationen

Lizenzanforderungen

Für den Einsatz der oben genannten Produkte werden folgende Lizenzen benötigt.

Intune Plan 1:

  • EM+S E3 oder höher oder
  • Microsoft 365 Business Premium oder
  • Microsoft 365 E3 oder höher

Proactive Remediations:

  • Windows 10/11 Ent./Edu. E3, E5, A3 oder A5 – diese Lizenzen sind im Microsoft 365 F3, E3, E5, A3, A5 enthalten

Winget:

  • kostenfrei im Betriebssystem entalten

Microsoft Defender for Endpoint:

  • Defender for Endpoint Plan 1 oder Plan 2 als Standalone Lizenz
  • Microsoft 365 E5

Winget

Winget – ist der Windows Package Manager von Microsoft, ähnlich wie man es von Linux Systemen, oder mit Chocolatey kennt. Mit der Abkündigung des Microsoft Store for Business, rückt nun dieses Werkzeug in den Fokus der Administratoren. Mit dem Kommandozeilen-Tool ist es möglich Universal Windows Platform-Apps (UWP – .appx/.appxbundle/.msix), aber auch Win32-Apps (.exe/.msi) auf Windows 10/11 Systemen zu installieren.

Dabei stammen die Quelldateien bei UWP-Apps aus dem Microsoft Store und werden von Microsoft bereitgestellt.

Bei Win32-Apps wird bei Microsoft nur der Anwendungskatalog gepflegt. Der eigentliche Download der Quelldateien erfolgt dann von Servern des Anwendungshersteller.

Die Installation einer App ist denkbar einfach. Es wird immer die aktuellste Version der Quelldateien genutzt, es sei denn man wählt explizit eine Version aus. Ausserdem sind bereits alle Parameter gesetzt, um die Anwendung ohne Benutzerinteraktion zu installieren. Hier ein Beispiel für die Installation von Zoom:

                winget install zoom

Dabei ist zu beachten, dass Installationen die administrative Berechtigung benötigen eine UAC-Meldung hervorrufen.

Winget ist ein Teil der App-Installer UWP, die ab Windows 10 21H1 oder Window 11 21H2 im Betriebssystem inkludiert ist. Prüfen kann man die Verfügbarkeit auf einem Client wie folgt.

                Get-AppPackage *Microsoft.DesktopAppInstaller* | select Name,PackageFullName

Proactive Remediations

Proactive Remediations beruhen auf Powershell Skripten, die in Skriptpaketen zusammengefasst werden. Jedes Skriptpaket besteht aus einem Erkennungsskript (Detection), einem Wiederherstellungsskript (Remediation) und Metadaten. Mithilfe von Intune können diese Skriptpakete bereitgestellt und Berichte zur Effektivität angezeigen werden.

Die Ausführung der Skriptpakete kann dabei zeitlich gesteuert, einmal täglich, stündlich oder einmalig erfolgen.

Darüber kann sichergestellt werden das bestimmte Einstellungen immer nach den Unternehmensrichtlinien umgesetzt sind und Fehlkonfigurationen automatisch korrigiert werden.

Durch die Powershellskripte ist der Einsatz sehr flexibel. So kann auf das Vorhandensein von Registry-Werten, Dateien mit einem bestimmten Zeitstempel oder Hashwert oder vielen weiteren Szenarien geprüft werden. So aber zum Beispiel eben auch, ob es eine Aktualisierung für eine bestimmte Applikation gibt, welche über Winget geprüft wird.  

Der Einsatz der Proactive Remediation kann entweder im Benutzer- oder im Systemkontext ausgeführt werden.

Microsoft Defender for Endpoint

Über den Defender for Endpoint wird unter anderem eine Software-Inventur aller registrierten Geräte ausgeführt. Weiterhin gibt Microsoft eine Empfehlung zu erkannten Schwachstellen in Applikationen.

Diese gesammelten Informationen laufen im Secure Score und Exposure Score zusammen. Wobei letzterer die Gefährdung aller Clients im Unternehmen darstellt. Ziel sollte es also sein diesen Wert so gering wie möglich zu halten.

Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget 2

Schauen wir uns die unterschiedlichen Versionen der Zoom Installationen an:

Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget 3

Nahezu aus jedem Dorf ein Hund. In Summe sind auf 22 Systemen 13 unterschiedliche Versionen. Wie sieht die Empfehlung im Defender for Endpoint aus?

Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget 4

Auf 16 der 22 Systemen ist eine gefährdete Version installiert. Das drückt den Exposure Score um 1,59 Punkte.

App Update

Nehmen wir nun Intune und die Proactive Remediation und versuchen Zoom auf einen möglichst aktuellen und einheitlichen Versionsstand zu bringen.

Beachten wir die Besonderheit aus der Einleitung, dann müssen die Skripte zur Detection und Remediation auf jeden Fall im Benutzerkontext erfolgen. Dabei muss der Pfad zu Winget in der Powershell nicht separat angegeben werden, da das Paket in jedem Benutzerprofil geladen wird. Wir brauchen erst einmal also nur die Logik für die Detection:

$upgrade = "Zoom.Zoom"
if ($(winget upgrade --accept-source-agreements) -like "* $upgrade *") {
Write-Host "Upgrade available for: $upgrade"
exit 1 # upgrade available, remediation needed
}
else {
Write-Host "No Upgrade for $upgrade available"
exit 0 # no upgrade, no action needed
}

Diese Zeilen in einer Skriptdatei abspeichern, zum Beispiel detection.ps1 und im Intune unter Reports > Endpoint Analytics > Proactive Remediations ein neues Skriptpaket erstellen.

Im ersten Schritt ist ein Name für das Skriptpaket und optional eine Beschreibung einzutragen.

Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget 5

Im zweiten Schritt laden wir die Skriptdatei hoch, ändern den Ausführungskontext auf „run as logged-on user“ und lassen die Skripte in der 64-Bit Powershell laufen.

Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget 6

Im vierten Schritt, der Zuweisung, wählen wir eine Azure AD Gruppe mit Benutzer aus, bei denen das Skript ausgeführt werden soll. Und natürlich wie oft die Prüfung erfolgen soll.

Um hier die größte Flexibilität zu haben, sollte das auf alle Benutzer angewendet werden. Denn nur wo ein Update erkannt wird, wird später auch nur das Update ausgeführt.

Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget 7

Jetzt lassen wir das Skript einige Zeit erst einmal Informationen sammeln. Noch passiert nichts außer der Prüfung, ob es theoretisch ein Update gäbe. Das Ergebnis kann man der gut in der Übersicht einsehen.

Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget 8

Wir erkennen, dass (mittlerweile) auf 18 Geräten ein „Problem“/ Update ansteht. Noch besser lässt sich das im Gerätestatus erkennen, wenn wir uns hier die Spalte „Pre-Remediation Detection Output“ einblenden lassen.

Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget 9

Aufgrund des „fehlerhaften“ Zustandes einzelner Geräte können wir nun das Wiederherstellungsskript (Remediation Script) einfügen und laufen lassen. Dieses wird automatisch bei Erkennen eines fehlerhaften Zustandes im Anschluss ausgeführt.

$upgrade = "Zoom.Zoom"
try{
# upgrade command
Write-Host "start Upgrade for: $upgrade"
winget upgrade --exact $upgrade --silent --force --accept-package-agreements --accept-source-agreements
exit 0
}
catch{
Write-Error "Error while installing upgrade for: $upgrade"
exit 1
}

Diese Codezeilen speichern wir als remediation.ps1 und fügen diese in unser Zoom Skriptpaket ein.

Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget 10

Nun heißt es wieder warten, je nach Einstellung wie häufig das Sktiptpaket ausgeführt werden soll. Um das Ganze zu beschleunigen, kann es helfen den Intune Dienst auf dem Windows 10/11 Client neu zu starten oder den gesamten Client neu zu starten. Auf den Clients gibt es natürlich auch ein Log, um das Geschehen zu verfolgen. Das ist unter:

%Programdata%\Microsoft\IntuneManagementExtension\Logs\IntuneManagementExtension.log

zu finden.

Über die ID des Skriptpaketes finden wir die Informationen zur Abarbeitung auf dem Client.

Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget 11

Da der Exit Code „1“ ist und ein Update vorliegt, wird automatisch das Remediation Skript gestartet und die Anwendung aktualisiert.

Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget 12

Im Anschluss prüft noch einmal das Detection Skript ob der Client „fehlerfrei“ ist.

Nach einiger Zeit kann man auch erkennen auf wie vielen Clients die alte Zoom Version aktualisiert wurde.

Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget 13

Ebenfalls im Defender for Endpoint steigt die Anzahl der Gerät mit einer aktuellen Zoom Version.

Anwendungsaktualisierung mit Microsoft Intune, Proactive Remediations & Winget 14

Mit kleinen Anpassungen am Detection und Remediation Skript lassen sich auch Applikationen aktualisieren, die im Systemkontext (Admin Rechte) ausgeführt werden müssen. So kann zum Beispiel das Skript für die Prüfung einer Teamviewer Aktualisierung aussehen.

$Winget = Get-ChildItem -Path (Join-Path -Path (Join-Path -Path $env:ProgramFiles -ChildPath "WindowsApps") -ChildPath "Microsoft.DesktopAppInstaller_1.19\winget.exe") $upgrade = "TeamViewer.TeamViewer" if ($(&$winget upgrade --accept-source-agreements) -like " $upgrade *") {
Write-Host "Upgrade available for: $upgrade"
exit 1 # upgrade available, remediation needed
}
else {
Write-Host "No Upgrade for $upgrade available"
exit 0 # no upgrade, no action needed
}

Fazit

Durch den effektiven Einsatz der Werkzeuge aus dem Microsoft 365 Umfeld können Anwendungen auf Clients auf einem aktuellen Stand gehalten werden, ohne das man großartig Anwendungspakete erstellen und testen muss. Da wo eine veraltete Anwendung erkannt wurde, wird automatisch aktualisiert.

So lässt sich der Exposure Score in einem Unternehmen niedrig halten, in dem man zeitnah die Anwendungen aktualisieren lässt.

Happy Updating!
SoftEd Trainings unterstützen Sie beim effektiven Einsatz von Microsoft 365. Jetzt passendes Training wählen

Cookie-Einstellungen

Wir nutzen Cookies, um Ihr Nutzererlebnis bei SoftEd Systems zu verbessern. Manche Cookies sind notwendig, damit unsere Website funktioniert. Mit anderen Cookies können wir die Zugriffe auf die Webseite analysieren.

Mit einem Klick auf "Zustimmen" akzeptieren sie diese Verarbeitung und auch die Weitergabe Ihrer Daten an Drittanbieter. Die Daten werden für Analysen genutzt. Weitere Informationen, auch zur Datenverarbeitung durch Drittanbieter, finden Sie in unseren Datenschutzhinweisen. Sie können die Verwendung von Cookies ablehnen.

Zustimmen