IT Excellence

Introducing IntuneDeviceInventory

18. November 2022 / Allgemein, Technologie, Trends

Das PowerShell Modul IntuneDeviceInventory ermöglicht es dir benutzerdefinierte Felder zu Intune Geräte-Objekten hinzuzufügen. Zusätzlich beinhaltete es einige handliche und unterstützenden Befehle, um Mehrfachaktionen wie beispielsweise einen Sync oder Reboot anzustossen.

IntuneDeviceInventory @GitHub

IntuneDeviceInventory @PSGallery

Modul installieren

Das Modul habe ich in der PowerShell Gallery (IntuneDeviceInventory) veröffentlicht. Du kannst es darum ganz einfach bei dir via PowerShell installieren. Dazu gibst du folgenden Befehl ein:

Install-Module -Name IntuneDeviceInventory

Funktionen

Das Modul kann grob in drei Funktionsgruppen unterteilt werden, Funktionen zur Verwaltung der benutzerdefinierten Felder, Funktionen für Massenaktionen und unterstützende Funktionen.

Authentifizierung

Du hast bei der Authentifizierung zwei Möglichkeiten. Entweder du meldest dich mit einem Intune Administrator an, oder verwendest eine Azure App Authentifizierung.

Benutzer Authentifizierung

Bei der Benutzerauthentifizierung musst du lediglich den Connect befehlt aufrufen und anschliessend deine Credentials eingeben:

App Authentifizierung

Für die Authtifizierung via App musst du zunächst eine App Registireung im Azure AD durchführen. Diese benötigt folgende Berechtigungen:

  • DeviceManagementManagedDevices.PrivilegedOperations.All
  • DeviceManagementManagedDevices.ReadWrite.All
  • Group.Read.All
  • GroupMember.Read.All
  • Organization.Read.All
  • User.Read.All

 

Die Registrierung kannst du entweder manuell im Azure oder Entra Portal (Applications > App registration) durchfügen oder über die Funktion New-IDIApp. Mit dem Parameter -Save wird die Verbindung in deinem AppData mit deinem User verschlüsselt abgelegt.
Falls bereits ein App besteht und du einfach ein neues Secret Estellene möchtest, verwende zusätzlich den Parameter -Force.

# Creates a new App and shows connection details
New-IDIApp

# Creates a new App and saves the details encrypted in the users AppData:
## ("C:\Users\%username%\AppData\Local\IntuneDeviceInventory\AppConnection\TenantId.connection")
New-IDIApp -Save

Auch wenn du die App Registration via PowerShell machst, musst du am Schluss noch den «Admin consent» geben. Dazu wird dir nach erfolgreicher Erstellung die URL ausgegeben. Nach erfolgreichem Erteilen werden die Status grün.

Zur Verbindung mit einer abgespeicherten App Verbindung rufst du am einfachsten den Befehl Import-IDIAppConnection -Select auf. Damit werdend dir alle gespeicherten Verbindungen angezeigt und du kannst dich mit einem Klick verbinden.
Alternativ kannst du auch folgenden Befehl mit den entsprechenden App Parametern verwenden:

Save-IDIAppConnection -ClientId $ClientId -TenantId $TenantId -ClientSecret $ClientSecret

Verwaltung der benutzerdefinierten Felder

Die Verwaltung der benutzerdefinierten Felder funktioniert am besten via UI, mehr dazu weiter unten.
Natürlich kannst du die Felder auch via PowerShell erstellen und abfüllen, dazu zeige ich dir ein Beispiel im Demovideo.

Das sind die Funktionen dazu:

  • Add-IDIProperty
  • Get-IDIDevice
  • Set-IDIDevice

Massenaktionen

Da es im Intune Portal nicht sehr praktikabel ist eine Aktion schnell für mehrere Geräte durchzuführen, habe ich die Massenaktionen eingebaut umso Aktionen, Geräte oder Gruppenbasiert, sowie für alle Geräte durchzuführen.

Aktuell sind das diese Funktionen, welche wiederum in Minor und Major eingeteilt werden, könne.
Die Minor Funktionen machen nur ein Update oder Restart des Geräts, bei den Major Funktionen ist das Gerät nach dem Absenden des Befehls nicht mehr nutzbar.

  • Invoke-IDIDeviceBitLockerRotation
  • Invoke-IDIDeviceDefenderScan
  • Invoke-IDIDeviceDefenderSignatures
  • Invoke-IDIDeviceRestart
  • Invoke-IDIDeviceSync
  • Invoke-IDIDeviceDelete
  • Invoke-IDIDeviceRetire
  • Invoke-IDIDeviceWipe

Alle «Invoke»-Funktionen kannst du mit den folgenden Parametern aufrufen:

Parameter

Beschreibung

-IDIDevice Gib ein Gerät an, dass du mit Get-IDIDevice ausgelesen hast.
-Group
Mitglieder einer Gruppe
-User UPN eines spezifischen Users. Aktion wird für alle seine Geräte ausgeführt.
-deviceName Spezifischen Gerätenamen.
-id Intune Device ID
-azureADDeviceId Azure AD Device ID
(Wird für die Verarbeitung der Gruppenmitglieder verwendet)
-All Triggert die Aktion für alle Intune Geräte.
-Grid Zeigt dir eine «Grid View» an, in welcher du ein oder mehrere Geräte anklicken/auswählen kannst.
-Verbose Diesen Parameter kannst du zusätzlich zu einem anderen angeben, um die Verarbeitung jedes Gerätes angezeigt zu bekommen. Das ist besonders bei vielen Geräten hilfreich.

Hier ein Beispiel in der Anwendung des Verbos Parameters:

Und hier eine Major Funktion. Diese werden erst nach einer Bestätigung oder mit dem Parameter -Force ausgeführt.

Unterstützende Funktionen

Alle weiteren Funktionen findest du im Repository und beinhalten einen Beschrieb im Header. Mit diesen solltest du aber nichts machen müssen. Sie werden von den anderen Funktionen oder dem UI aufgerufen.

Dieser Post geht bei den Funktionen nicht in die Details. Genauere Beschreibungen und mehr Beispiele findest du im Projekt Repository auf GitHub oder im Demovideo weiter unten.

Ich habe das «Notes» Feld bereits abgefüllt! Was nun?

Keine Angst, auch wenn du das Notes Feld bereits mit einer Information abgefüllt hast, kannst du das Modul verwenden. Dazu gibt es die Funktion ConvertTo-IDINotes.
Mit dieser kannst du die Notizen für ein bestimmtes Gerät oder auch gleich alle in ein JSON und somit kompatibel mit dem IntuneDeviceInventory konvertieren.

Wenn du nicht sicher bist, ob deine Notizfelder kompatibel sind, führe einfach die Funktion Get-IDIDevice -All aus. Damit werden alle Geräte inklusive Notizen ausgelesen und geprüft. Ist ein Feld nicht kompatibel, wird gleich ein Fehler ausgegeben.
Alle Geräte konvertierst du mit dem Befehl ConvertTo-IDINotes -All.
Alle Geräte, die bereits kompatibel sind, werden dabei mit einer Warnung übersprungen.

UI zum Modul

Das Verwalten der benutzerdefinierten Felder ist via Terminal nicht immer ganz einfach und praktikabel. Um die Features noch einfacher nutzen zu können, haben Jannik Reinhard und ich zusätzlich ein UI zum Modul entwickelt. Dieses findest du ebenfalls im GitHub Repository.

UI @GitHub

Hier ein kleiner Ausschnitt des UI:

Demo IntuneDeviceInventory (Terminal)

Im nachstehenden Video zeige ich dir, wie du mit dem Modul starten kannst und was die Basis Befehle sind. Weitere Beispiele findest du in meinem GitHub Repository.

Code Beispiele

Hier sind die Beispiele aus dem Demovideo:

#Installing IDI
Install-Module -Name IntuneDeviceInventory

# Creates a new App and shows connection details
## login with the Admin required (Application administrator, Application developer or Cloud application administrator)
New-IDIApp

# Creates a new App and saves the details encrypted in the users AppData:
## ("C:\Users\%username%\AppData\Local\IntuneDeviceInventory\AppConnection\TenantId.connection")
New-IDIApp -Save

# Creates a new App and saves the details encrypted in the users AppData
# -Force creates a new secret if the app already exists
New-IDIApp -Save -Force

# Lists all aviable/saved connections
Import-IDIAppConnection -All

# Authentication with a saved Azure App
Import-IDIAppConnection -TenantId your.domain.com

# Authentication with a saved Azure App (if you have multiple and want to select)
Import-IDIAppConnection -Select

# Convert existing device notes
ConvertTo-IDINotes -All -PropertyName "purchase date"

# Ge all devices
Get-IDIDevices -All

# Add property
Add-IDIProperty -PropertyName "Monitor"

# Select a device to edit a property
$Device2edit = $IDIDevices_all | Out-GridView -OutputMode Single

# Set device Property
$Device2edit.Monitor = 'Samsung Odyssey G9'

# Update device in Intune with changes
Set-IDIDevice -IDIDevice $Device2edit

# Bulk commands
## Trigger sync for all devices
Invoke-IDIDeviceSync -All

## Trigger reboot for devices in Group "DEV-WIN-Pilot"
Invoke-IDIDeviceRestart -Group "DEV-WIN-Pilot"

## Trigger reboot for devices, selected in GridView
Invoke-IDIDeviceRestart -Grid

## Trigger Defender Signatures update for specific device
Invoke-IDIDeviceDefenderSignatures -deviceName 'dev-w11-1'

Post erstmals veröffentlich von unserem Business Solutions Consultant Florian Salzmann auf seinem privaten Blog auf scloud.work


« Zurück zur Übersicht