Für Support-Engineers ist es schwierig, Benutzer zum Company Portal zu lotsen, da das Company Portal je nach Systemsprache anders heißt. Im Deutschen wird das Company Portal beispielsweise „Unternehmensportal” genannt. Um dies zu vereinfachen und den Zugriff zu beschleunigen, habe ich ein kleines System-Tray-Icon geschrieben. Dieses Icon dient nicht nur dazu, das Company Portal zu öffnen, sondern bietet auch viele weitere Funktionen, um den Prozess der Fehlerbehebung zu vereinfachen.

Inhaltsverzeichnis
Funktionen
Das System-Tray-Tool stellt die folgenden Funktionen bereit:
Sync: Wenn du die Schaltfläche Sync auswählst, wird ein IME-Sync (Intune Management Extension) ausgelöst.
$syncIme = New-Object -ComObject Shell.Application
$syncIme.open("intunemanagementextension://syncapp")
Open Company Portal: Mit dieser Schaltfläche kannst du das Company Portal öffnen.
explorer.exe shell:appsFolder\Microsoft.CompanyPortal_8wekyb3d8bbwe!App
Troubleshoot: Dieses Menü enthält verschiedene Aktionen zur Fehlerbehebung der IME. Das kann bei Support-Fällen sehr hilfreich sein.
- Install CMTrace (Invoke-WebRequest -Uri $cmtraceSourceLink -OutFile $cmtracePath)
- Du kannst in der Variable $cmtraceSourceLink den Pfad angeben, von dem du CMTrace herunterladen möchtest. Standardmäßig erfolgt der Download aus meinem GitHub-Repository. Der Installationspfad ist (C:\Windows\Temp).
- Show IME Logs (explorer c:\ProgramData\Microsoft\IntuneManagementExtension\Logs)
- Collect diagnostic logs (MdmDiagnosticsTool.exe -out c:\temp\diagnostic)
- IME Restart (Restart-Service -Name “IntuneManagementExtension”)
- User Certificate (Certmgr.msc)
- Machine Certificate (Certlm.msc)
- IME Registry (regedit + [System.Windows.MessageBox]::Show(‘Navigate to: “HKLM\SOFTWARE\Microsoft\IntuneManagementExtension”‘) )
Exit: Beendet das System-Tray-Icon
Normalerweise muss sich ein Support-Engineer für diese Aktionen einen Registry-Pfad, einen Dateinamen oder einen Dienstnamen merken. Indem du sie nur einen Klick entfernt platzierst, wird aus einer Remote-Sitzung voller Copy-Paste-Befehle ein geführter Ablauf, den der Endbenutzer sogar selbst ausführen kann, während du in der Leitung bleibst. Besonders wertvoll ist das beim IME-Neustart und beim Sammeln der Diagnose-Logs, denn das sind meist die ersten beiden Schritte in jedem Intune-Troubleshooting.
So wird es bereitgestellt
- Jetzt müssen wir die Skripte nur noch über Intune bereitstellen. Dazu öffnen wir das Intune Admin Center und navigieren zu Devices -> Scripts
- Lade das Deployment-Skript aus meinem GitHub-Repository herunter
- Es gibt zwei Skripte: eines für die direkte Ausführung (Create-IntuneSystemtray.ps1) und eines für die Bereitstellung über Intune (Deploy-IntuneSystemtrayScript.ps1)
- Klicke auf ADD

- Gib einen Namen ein
- Klicke auf Next

- Lade das Skript hoch
- Wähle Yes bei „Run this script using the logged on credentials“
- Klicke auf Next

- Klicke auf Add Groups
- Wähle eine Gruppe aus und klicke auf Select
- Klicke auf Next

- Klicke auf Add

Anpassung und häufige Fehler
Da das Skript im Benutzerkontext läuft, ist der Zuweisungsbereich die häufigste Fehlerquelle. Das Plattform-Skript muss an Benutzergruppen zugewiesen werden, und die Option Run this script using the logged on credentials muss auf Yes stehen. Weist du es Gerätegruppen zu oder lässt du den Schalter auf dem Standardwert, erscheint das Tray-Icon entweder gar nicht oder ohne die Berechtigungen, die es braucht, um benutzerbezogene Tools wie den Benutzerzertifikatspeicher zu öffnen.
Ein zweiter Punkt ist die Persistenz. Plattform-Skripte werden einmal ausgeführt und danach als abgeschlossen markiert. Wenn das Tray-Icon also nach jeder Anmeldung wieder erscheinen soll, sollte das Skript eine kleine geplante Aufgabe oder einen Run-Schlüssel-Eintrag registrieren, statt sich auf die Skriptausführung selbst zu verlassen. So stellt ein Neustart oder eine neue Benutzersitzung das Icon immer wieder her, ohne auf den nächsten Intune-Check-in zu warten.
Behandle schließlich die CMTrace-Download-Quelle als etwas, das du selbst kontrollierst. Wenn du $cmtraceSourceLink auf eine interne Freigabe oder dein eigenes Repository statt auf einen öffentlichen Link zeigen lässt, funktioniert das Tool auch dann noch, wenn sich eine externe URL ändert, und dein Security-Team hat eine einzige, prüfbare Quelle für die Datei, die auf jedem verwalteten Gerät landet.
Fazit
Das Skript zeigt dir, wie du ein System-Tray-Icon erstellst und es über Intune verteilst. Du kannst das Skript an deine Bedürfnisse anpassen. Beispielsweise kannst du eine Schaltfläche hinzufügen, die die Logs in einen angepassten Storage hochlädt. Wenn du Fragen hast oder Hilfe benötigst, lass es mich wissen.
Bleib gesund, Cheers
Jannik
Hi Jannik,
Scheduled task can’t be created. Error message is “access denied”. I think because of line 125. It requires access to HLKM/…./…./…./IntuneManagementExtension.
Hello Roy thank you for the information. I have fixed this and the sync will now triggered on this way:
$syncIme = New-Object -ComObject Shell.Application
$syncIme.open(“intunemanagementextension://syncapp”)
Deploying the script this way, will only work if your end users are local admin. If you want to deploy the script and run the scheduled task as limited users, you need to change the trigger:
$user = New-ScheduledTaskPrincipal -GroupId ‘S-1-5-32-545’ -RunLevel Limited
[…] https://jannikreinhard.com/2022/06/05/company-portal-system-tray-icon/ […]
[…] few weeks ago I released the Company Portal System Tray tool. The posts have a very good feedback and the tool was tested by some and also used productively. I […]