Nach dem Auslösen einer Remediation-Aktion oder einfach, um Feedback vom Nutzer/Kunden zu erhalten, ist eine Art Umfrage sehr nützlich. Eine Kontaktaufnahme per E-Mail führt in der Regel zu sehr niedrigen Antwortraten. Deutlich besser ist es, die Nutzer direkt über ein Popup anzusprechen. Ein ähnlicher Ansatz kann auch für nutzerseitige Benachrichtigungen sinnvoll sein, zum Beispiel beim Konfigurieren von Windows Update Reboot-Benachrichtigungen. Wie du dies mithilfe eines Remediation-Skripts umsetzen und die Antwort in einen Log Analytics Workspace schreiben kannst, erkläre ich dir in diesem Blogbeitrag.

Inhaltsverzeichnis
Einen Log Analytics Workspace erstellen
- Öffne das Azure Portal
- Suche nach Log Analytics workspace

- Wähle die Subscription und die Resource group aus oder erstelle eine neue
- Gib einen Namen für den Workspace ein
- Wähle die Region aus
- Klicke auf Next: Tags >

- Optional: Füge Tags hinzu
- Klicke auf Next: Review + Create >

- Klicke auf Create

Workspace-Informationen abrufen
- Öffne den neuen Log Analytics Workspace
- Navigiere zu Agent management
- Hier findest du die Workspace ID und den Primary key. Diese Informationen benötigst du später, um sie in das Skript einzufügen

Das Skript anpassen
Das Skript, das die Toast-Benachrichtigung öffnet und die Auswahl des Nutzers an den Log Analytics Workspace sendet, findest du in meinem Git-Repository. Lade das Skript zunächst herunter und öffne es in einem Code-Editor wie Visual Studio Code.
- Zuerst benötigst du ein Bild für den Toast-Header. Um dieses Bild in das PowerShell-Skript einzufügen, musst du es in Base64 kodieren. Für die Kodierung verwende ich das folgende Tool: https://www.base64-image.de/
Wenn das Bild kodiert ist, kannst du den Base64-String in die Variable $tostImageBase64 im Skript einfügen

- Als Nächstes müssen wir die folgenden Variablen mit dem Inhalt anpassen, den du anzeigen möchtest:


Als Nächstes müssen wir die $customerId und den $sharedKey einfügen. Wenn du ein umfangreicheres Setup zum Sammeln von Windows-Gerätedaten benötigst, wirf einen Blick auf das Azure Monitor Agent Setup. Beide Informationen wurden im Abschnitt Workspace-Informationen abrufen kopiert. Die $customerId = Workspace ID und der $sharedKey = Primary key. Optional kannst du den Namen der Log Analytics Tabelle über die Variable $logType ändern. Dasselbe Log Analytics Konzept kann auch für andere Intune-Daten verwendet werden, zum Beispiel wenn du Intune Discovered Apps in einen Log Analytics Workspace kopierst.

Skript über Endpoint Analytics bereitstellen
- Um dieses Toast-Menü auf den Clients bereitzustellen, öffnen wir das Intune Admin Center und navigieren zu Reports -> Endpoint analytics -> Proactive remediations
- Klicke auf Create script package

- Gib einen Namen ein
- Klicke auf Next

- Lade das script als detection hoch
- Wähle Yes für Run this script using the logged on credentials
- Klicke auf Next

- Klicke auf Next
- Weise das Skript einer Gruppe zu und klicke auf Daily
- Ändere den Schedule auf Once (du kannst auch einen anderen Schedule wie hourly oder daily auswählen) und klicke auf apply
- Klicke auf Next

- Klicke auf Create
Wie funktioniert es
Zuerst wird innerhalb des PowerShell-Skripts pro möglicher Antwort ein PowerShell-Skript erstellt und unter “C:UsersPublicDocuments” abgelegt:
($actionScriptPre + "Yes" + $actionScriptPost) | out-file "$scripExecutionPathActionYes.ps1" -Force -Encoding ASCII
Danach wird ein CMD-Skript erstellt, das die sehr komplexe Aufgabe hat, das PowerShell-Skript aufzurufen. Der Grund dafür ist, dass wir anschließend eine Action registrieren müssen und diese Action nur ein CMD-Skript ausführen kann. Auch dieses Skript wird in “C:UsersPublicDocuments” erstellt:
Powershell.exe -executionpolicy Bypass -File C:UsersPublicDocumentsActionYes.ps1
$actionScriptCmdPartly | out-file "$scripExecutionPathActionPartly.cmd" -Force -Encoding ASCII
Danach wird dieses CMD-Skript, wie zuvor erwähnt, als Action registriert. Die Action findest du in der Registry unter folgendem Pfad: “HKCU:SOFTWAREClasses$Action_Name”
Wenn diese Vorbereitungen abgeschlossen sind, wird die Toast-Benachrichtigung angezeigt. Das ist vergleichbar mit dem Toast-basierten Workflow, den ich verwendet habe, um einen ausstehenden Windows Update Reboot zu verzögern. Die Toast-Benachrichtigung wird über ein XML zusammengesetzt und kann ebenfalls einfach angepasst und verändert werden. Unter dem Link findest du Informationen dazu, wie du eine Toast-Benachrichtigung gestalten kannst.
Register-NotificationApp -AppID $tostTitle -AppDisplayName $tostTitle
# Create toast
$load = [Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime]
$load = [Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime]
$toastXml = New-Object -TypeName Windows.Data.Xml.Dom.XmlDocument
$toastXml.LoadXml($toast.OuterXml)
# Show the Toast
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($tostTitle).Show($toastXml)
Wenn die Toast-Benachrichtigung ausgeführt und eine Action ausgelöst wird, löschen sich alle auf dem System erzeugten Skripte selbst:
Remove-Item C:UsersPublicDocumentsActionYes.ps1 -Force
Remove-Item C:UsersPublicDocumentsActionPartly.ps1 -Force
Remove-Item C:UsersPublicDocumentsActionNo.ps1 -Force
Remove-Item C:UsersPublicDocumentsActionYes.cmd -Force
Remove-Item C:UsersPublicDocumentsActionPartly.cmd -Force
Remove-Item C:UsersPublicDocumentsActionNo.cmd -Force
Fazit
Für Nutzer ist es oft ansprechender, wenn sie direkt Feedback geben können, sobald ein Problem aufgetreten ist, oder einfach durch einen Klick auf das Popup an Umfragen teilnehmen können. Diese Implementierung ist sehr einfach und lässt sich für viele Anwendungsfälle anpassen. Im Skript, das sich temporär auf dem System befindet, muss ein Shared Key für den Log Analytics Workspace angegeben werden. Mit diesem Schlüssel ist es möglich, Events an den Workspace zu senden. Gerät dieser Schlüssel in die falschen Hände, besteht die Möglichkeit, dass der Workspace mit Events geflutet wird.
Bleib gesund, Cheers
Jannik
I mistakenly deployed this, but am unable to remove it from the machines it was deployed to. How?
Hey Jaz, you can remove the following reg key:
HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings\Companyname IT Support