Intune Tool Box – Rebuild of Intune in PowerShell

Intune Tool Box - Nachbau von Intune in PowerShell

Dieser Beitrag stellt die Intune Toolbox vor – meinen Open-Source-Versuch, Intune in PowerShell nachzubauen. Es handelt sich um eine modulare Sammlung von PowerShell-Skripten, die die häufigsten Intune-Admin-Aufgaben (Geräte, Apps, Richtlinien, Zuweisungen) kapseln, sodass du sie direkt im Terminal ausführen kannst, anstatt dich durch das Admin Center zu klicken.

Ich denke, jeder, der täglich mit Intune arbeitet, kennt die Situation, in der man sich ein einfaches Feature wünscht, das die tägliche Arbeit erleichtern würde. Um genau diese Lücken zu schließen, habe ich beschlossen, mein eigenes Tool mit vielen kleinen Funktionen zu programmieren, die Intune-Admins das Leben leichter machen. Das war die Geburtsstunde der Intune Tool Box. Dieses Tool ist eine WPF-Anwendung, die in PowerShell geschrieben ist. Die App hat dasselbe Design wie Intune, bietet aber kleine Helfer für die tägliche Arbeit.

Das Gute ist, dass diese App so aufgebaut ist, dass sie sich jederzeit problemlos erweitern lässt. Falls dir Funktionen einfallen, die du in der Intune-Konsole vermisst und die sich über Graph lösen lassen, lass es mich wissen, damit ich sie in die App aufnehmen kann. Mein Plan ist es, die App Schritt für Schritt weiterzuentwickeln und neue coole Funktionen einzubauen.

Intune Tool Box – Nachbau von Intune in PowerShell

Features

Gesamtübersicht der Umgebung:

Auf der Startseite erhältst du einen Überblick über deine gesamte Umgebung und siehst, wie viele Clients pro Betriebssystem registriert sind. Zusätzlich siehst du die Anzahl der konformen und nicht konformen Geräte sowie die Anzahl der reinen MDM- und Hybrid-registrierten Geräte in deiner Umgebung.

Gruppenansicht:

In dieser Ansicht erhältst du einen Überblick über alle Gruppen in deiner Umgebung mit allen aus dem Portal bekannten Funktionen.

Alle Geräte synchronisieren:

Diese Funktion hilft dir, alle Geräte einer bestimmten Gruppe zu synchronisieren. Das kann nützlich sein, um die Zeit zu verkürzen, bis eine Konfigurationsänderung auf allen Geräten einer Gruppe wirksam wird. Du brauchst nur einen Klick, und die Synchronisierung wird auf allen Geräten der Gruppe ausgelöst.

Gruppenübersicht:

Ich denke, du warst schon oft in der Situation, in der du sehen wolltest, was einer Gruppe zugewiesen ist. Jetzt kannst du dies ganz einfach in der Übersicht sehen.

Gruppe migrieren:
In deiner Umgebung hast du mehrere Gruppen, um Zuweisungen einer App oder eines Konfigurationsprofils zu erstellen. Wenn du später merkst, dass es besser wäre, wenn dies keine Gerätegruppe, sondern eine Benutzergruppe wäre, ist es schwierig, dies ohne Auswirkungen auf den Benutzer oder mit erheblichem Aufwand zu ändern. Mit dieser Funktion kannst du eine Benutzergruppe in eine Gerätegruppe oder eine Gerätegruppe in eine Benutzergruppe umwandeln – basierend auf dem einem Gerät zugewiesenen Benutzer oder auf den einem Benutzer zugewiesenen Geräten. Wenn du „In Gerätegruppe migrieren” auswählst, kannst du außerdem die zu berücksichtigenden Betriebssysteme festlegen.

Gruppe duplizieren:

Manchmal brauchst du genau dieselbe Gruppe, aber mit kleinen Anpassungen. In der Intune-Konsole gibt es keine Funktion, um eine Gruppe mit denselben Mitgliedern zu kopieren. Diese Funktion bietet dir genau diese Möglichkeit.

Elemente zuweisen:

Du kennst die Situation: Du hast eine neue Gruppe und möchtest sie verschiedenen Elementen zuweisen. Dazu musst du jedes einzelne Konfigurationsprofil, jede App usw. öffnen und die Zuweisung hinzufügen. Mit der Intune Tool Box geht das viel schneller. Du wählst die Gruppe aus und weist in der Gruppenansicht ganz einfach alles zu, was du brauchst.

Wie funktioniert es

Diese Anwendung ist eine WPF-XAML-Anwendung. Das bedeutet, dass die komplette GUI in XAML geschrieben ist. Dafür habe ich Visual Studio verwendet, weil der Editor in Visual Studio eine Vorschau bietet, mit der man direkt sieht, wie eine Änderung aussieht. Was ich allerdings gelernt habe: Es sieht in der App nicht immer gut aus, nur weil es im Editor gut aussieht.

Intune Tool Box – Nachbau von Intune in PowerShell

Wie kannst du die Intune Tool Box nutzen

Intune Tool Box – Nachbau von Intune in PowerShell
  • Stelle sicher, dass das PowerShell SDK auf deinem System installiert ist. Falls nicht, installiere das SDK mit folgendem Befehl:
Install-Module Microsoft.Graph -Scope CurrentUser
  • Führe die Start-IntuneToolBox.ps1 aus
  • Viel Spaß

Fazit

Ich freue mich, dass ich nach Stunden der Entwicklung die erste Version der Intune Tool Box veröffentlichen kann. Ich freue mich über jeden, der mein Tool testet, mir Feedback gibt und mögliche Bugs meldet. Ich freue mich auch über jede Idee, wie ich mein Tool weiterentwickeln kann. Ich hoffe, ich kann dir mit diesem Tool deine tägliche Arbeit erleichtern. Viel Spaß beim Testen der Intune Tool Box.

Update 15.07.2022

Falls bei der Ausführung der Intune Tool Box auf deinem System der folgende Fehler auftritt:

Intune Tool Box – Nachbau von Intune in PowerShell

musst du die DLLs entsperren. Navigiere zum Ordner libraries und klicke in den Eigenschaften jeder DLL auf „Zulassen” (Unblock).

Intune Tool Box – Nachbau von Intune in PowerShell

Es kann sein, dass du deine PowerShell-Sitzung neu starten musst, damit die Fehlermeldung verschwindet.

16 thoughts on “Intune Tool Box - Nachbau von Intune in PowerShell

  1. Hi Jannik! We’re trying your tool but we received next error message when we execute Start-IntuneToolBox after update Graph modules

    The property ‘source’ cannot be found on this object. Verify that the property exists and can be set.
    At E:\Software\IntuneToolBox-main\modules\uiHandler.psm1:460 char:5
    + $WPFImgButtonCloseMenue.source = Get-DecodeBase64Image -ImageBase …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertyNotFound

    Could you help us please?

    Thank you in advance!

    • We have over 13,000 groups and close to 800 devices in our tenant. Unfortunately the toolbox isn’t usable at this point but I am really excited to see where this is going. But I don’t think it’s quite ready for primetime just yet. I hate the Endpoint web experience with a passion so I was hoping for a solution to make the experience better. Jannik thank you for all of your hardware and all that you do. Will be waiting in anticipation for further updates.

    • This is a very valuable feedback. I will work on improving the performance on bigger setups. Thank you I will come back with a new version with also more features.

  2. Cannot get this to work

    At C:\Users\jimenezep.a\Documents\Scripts\IntuneToolBox-main\modules\utility.psm1:232 char:7
    + Get-MgUserPhotoContent -UserId $upn -OutFile $path
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: ({ UserId = JIMENEZEP.a@cooley.com }:f__AnonymousType5`1) [Get-MgUserPhotoContent_Get], RestException`1
    + FullyQualifiedErrorId : UnknownError,Microsoft.Graph.PowerShell.Cmdlets.GetMgUserPhotoContent_Get
    Get-MgDeviceManagementManagedDeviceOverview : {
    “_version”: 3,
    “Message”: “An internal server error has occurred – Operation ID (for customer support): 00000000-0000-0000-0000-000000000000 – Activity ID: 1972af16-8a44-415e-96d2-25611513c4a8 – Url:
    https://fef.msua02.manage.microsoft.com/DeviceFE/StatelessDeviceFEService/deviceManagement/managedDeviceOverview?api-version=5022-05-24“,
    “CustomApiErrorPhrase”: “”,
    “RetryAfter”: null,
    “ErrorSourceService”: “”,
    “HttpHeaders”: “{}”
    }
    At C:\Users\jimenezep.a\Documents\Scripts\IntuneToolBox-main\modules\pageMain.psm1:19 char:5
    + $deviceManagementOverview = Get-MgDeviceManagementManagedDeviceOv …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: ({ Property = , ExpandProperty = }:f__AnonymousType1`2) [Get-MgDeviceMan…iceOverview_Get], RestException`1
    + FullyQualifiedErrorId : InternalServerError,Microsoft.Graph.PowerShell.Cmdlets.GetMgDeviceManagementManagedDeviceOverview_Get

    None of the DLLs are blocked. Graph is connected. Please advise, thanks!

    • Toolbox eventually launched (yay!) but it’s really slow. For example if I press any of the buttons, it will hang and take about 5 minutes to show the action. I’m also only seeing Home and Group Mgmt.

    • Hi Edi, how many devices and groups are in your tenant. In the version 1.1 there are only the home and the group mgmt. view but it is planned to further develop this

  3. Thank you. After running the script and authenticating against my user, Intune Tool Box begins to initialize but now I’m faced with this:

    Get-MgUserPhotoContent : {
    “errorCode”: “EnterpriseEntityNotFound”,
    “message”: “Accessing identity not a consumer, so async provisioning of mailbox (a.k.a. ‘shard’) for target identity was aborted”,
    “target”: null,
    “details”: null,
    “innerError”: null,
    “instanceAnnotations”: []
    }
    At C:\Users\jimenezep.a\Documents\Scripts\IntuneToolBox-main\IntuneToolBox-main\modules\utility.psm1:232 char:7
    + Get-MgUserPhotoContent -UserId $upn -OutFile $path
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: ({ UserId = JIMENEZEP.a@cooley.com }:f__AnonymousType5`1) [Get-MgUserPhotoContent_Get], RestException`1
    + FullyQualifiedErrorId : UnknownError,Microsoft.Graph.PowerShell.Cmdlets.GetMgUserPhotoContent_Get

Comments are closed.