PowerShell-Skripte zur Verwaltung von Azure AD-Geräten und Gruppenzugehörigkeiten mit Cross-Platform-Support für Windows, macOS und Linux.
⚠️ Wichtiger Hinweis: Ab Version 1.6 wird ausschließlich Microsoft.Graph verwendet. Das AzureAD-Modul wird nicht mehr unterstützt, da Microsoft die Azure AD Graph API deaktiviert hat.
- 🖥️ Cross-Platform: Windows, macOS, Linux (PowerShell 5.1+ oder 7+)
- 🔄 Modern: Verwendet ausschließlich Microsoft.Graph SDK (Azure AD Graph API ist deprecated)
- 📊 Batch-Verarbeitung: Mehrere Geräte gleichzeitig hinzufügen
- ✅ Duplikatsprüfung: Überspringt bereits vorhandene Geräte
- 📝 Logging: Detaillierte Log-Dateien mit Zeitstempel
- 🔧 Auto-Install: Installiert Microsoft.Graph automatisch, falls nicht vorhanden
| Skript | Plattform | Beschreibung |
|---|---|---|
| AddAADDeviceToAADGroup.ps1 | 🪟🍎🐧 | Hauptskript: Geräte aus CSV zu Azure AD-Gruppe hinzufügen |
| AADChecker.ps1 | 🪟🍎🐧 | Prüft, welche Geräte in Azure AD existieren |
| Add-DevicesToAADGroupFunction.ps1 | 🪟🍎🐧 | PowerShell-Funktion für Automatisierung |
| AddDeviceCSV.ps1 | 🪟 | GUI-Tool zur CSV-Erstellung (nur Windows) |
🪟 Windows | 🍎 macOS | 🐧 Linux
cd AddAADDeviceToAADGroup
.\AddAADDeviceToAADGroup.ps1cd AddAADDeviceToAADGroup
pwsh
./AddAADDeviceToAADGroup.ps1Das Skript fragt nach:
- CSV-Datei (1 = Devices.csv, 2 = Devices_In_AAD.csv)
- Name der Azure AD-Gruppe
- Anmeldung bei Azure AD / Microsoft Graph
Die CSV-Datei kann einen der folgenden Header verwenden:
DeviceName
DESKTOP-ABC123
LAPTOP-XYZ456
WORKSTATION-789Oder alternativ per Azure AD Device ID:
AzureADDeviceId
12345678-1234-1234-1234-123456789abc
87654321-4321-4321-4321-cba987654321Wichtig: Erste Zeile muss exakt DeviceName, AzureADDeviceId oder DeviceId sein.
Fügt Geräte aus CSV zu einer Azure AD-Gruppe hinzu.
Ablauf:
- Prüft PowerShell-Version (mind. 5.1 erforderlich)
- Installiert Microsoft.Graph automatisch, falls nicht vorhanden
- Liest CSV-Datei
- Prüft jedes Gerät (Existiert? Bereits Mitglied?)
- Fügt neue Geräte zur Gruppe hinzu
- Erstellt Log-Dateien
Ausgabe:
PowerShell Version: 7.4.1
Using Microsoft Graph PowerShell SDK (AzureAD module is deprecated).
[2025-12-12 10:30:15] SUCCESS: Device LAPTOP-XYZ456 added to group Intune-Devices.
[2025-12-12 10:30:17] INFO: Device DESKTOP-ABC123 is already a member.
Script completed. Check log files for details.
Prüft, welche Geräte aus der CSV in Azure AD existieren.
Verwendung:
.\AADChecker.ps1Erstellt:
Devices_In_AAD.csv- Gefundene GeräteDevices_Not_In_AAD.csv- Nicht gefundene Geräte
Anwendung: Vorab-Prüfung vor dem Hinzufügen zu Gruppen
PowerShell-Funktion für Automatisierung.
Verwendung:
# Funktion laden
. .\Add-DevicesToAADGroupFunction.ps1
# Ausführen
$result = Add-DevicesToAADGroup -GroupName "Intune-Devices" -CsvPath ".\Devices.csv"
# Ergebnis
Write-Host "Erfolgreich: $($result.Success)"
Write-Host "Bereits Mitglied: $($result.AlreadyMember)"GUI-Tool zur einfachen CSV-Erstellung.
.\AddDeviceCSV.ps1Gerätenamen eingeben (komma-, semikolon- oder leerzeichen-getrennt) und speichern.
# Execution Policy setzen
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# Microsoft.Graph Modul (wird automatisch installiert, oder manuell):
Install-Module Microsoft.Graph -Scope CurrentUser -ForceWichtig: Das AzureAD-Modul wird nicht mehr unterstützt, da Microsoft die Azure AD Graph API deaktiviert hat. Verwenden Sie ausschließlich Microsoft.Graph.
# PowerShell 7+ installieren
# macOS:
brew install --cask powershell
# Linux (Ubuntu/Debian):
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update && sudo apt-get install -y powershell
# PowerShell starten und Modul installieren
pwsh
Install-Module Microsoft.Graph -Scope CurrentUser -ForceBenötigt werden:
Group.ReadWrite.All- Gruppen lesen und schreibenDevice.Read.All- Geräte lesenDirectory.Read.All- Verzeichnis lesen
Diese werden beim ersten Connect-MgGraph angefordert.
.\AddAADDeviceToAADGroup.ps1
# CSV wählen → Gruppe eingeben → Anmelden → Fertig# 1. Prüfen, welche Geräte existieren
.\AADChecker.ps1
# 2. Nur existierende Geräte hinzufügen
.\AddAADDeviceToAADGroup.ps1 # Option "2" wählen für Devices_In_AAD.csv. .\Add-DevicesToAADGroupFunction.ps1
$result = Add-DevicesToAADGroup -GroupName "Intune-Devices" -CsvPath ".\Devices.csv"
Write-Host "Erfolgreich: $($result.Success) | Fehler: $($result.Failed)". .\Add-DevicesToAADGroupFunction.ps1
$groups = @("Gruppe1", "Gruppe2", "Gruppe3")
foreach ($group in $groups) {
Add-DevicesToAADGroup -GroupName $group -CsvPath ".\Devices_$group.csv"
}Problem: Fehlermeldung "Access blocked to AAD Graph API for this application"
Ursache: Microsoft hat die Azure AD Graph API deaktiviert. Das alte AzureAD-Modul funktioniert nicht mehr.
Lösung: Verwenden Sie Version 1.6+ der Scripts, die Microsoft.Graph nutzen:
# Alte AzureAD-Module entfernen (optional)
Uninstall-Module AzureAD -Force
# Microsoft.Graph installieren
Install-Module Microsoft.Graph -Scope CurrentUser -Force
# Scripts aktualisieren und erneut ausführen
./AddAADDeviceToAADGroup.ps1Problem: Error: The CSV file must have one of the following headers: DeviceName, AzureADDeviceId, DeviceId
Lösung: Erste Zeile muss exakt DeviceName, AzureADDeviceId oder DeviceId sein
Get-Content Devices.csv -TotalCount 1 # PrüfenProblem: Error: The specified Azure AD group 'MyGroup' does not exist
Lösung: Exakten Gruppennamen verwenden
Connect-MgGraph -Scopes "Group.Read.All"
Get-MgGroup -Filter "startswith(displayName,'Intune')" | Select DisplayNameProblem: Insufficient privileges to complete the operation
Lösung: Mit korrekten Berechtigungen verbinden
Disconnect-MgGraph
Connect-MgGraph -Scopes "Group.ReadWrite.All","Device.Read.All","Directory.Read.All"F: Warum funktioniert das AzureAD-Modul nicht mehr?
A: Microsoft hat die Azure AD Graph API am 30. Juni 2023 deaktiviert. Alle Scripts wurden auf Microsoft.Graph migriert.
F: Funktioniert das ohne Admin-Rechte?
A: Ja, lokale Admin-Rechte sind nicht nötig. Nur Azure AD-Berechtigungen werden benötigt.
F: Welche PowerShell-Version brauche ich?
A: PowerShell 5.1 oder höher (Windows) bzw. PowerShell Core 7+ (macOS/Linux).
F: Wie viele Geräte kann ich verarbeiten?
A: Getestet mit bis zu 500 Geräten. Bei >1000 Geräten in mehrere CSV-Dateien aufteilen.
F: Was passiert bei bereits vorhandenen Geräten?
A: Diese werden übersprungen mit der Meldung "already a member" - kein Fehler.
F: Kann ich Security Groups verwenden?
A: Ja, funktioniert mit Security Groups und Microsoft 365 Groups.
F: Unterstützt das Skript MFA?
A: Ja, die interaktive Anmeldung unterstützt MFA, Conditional Access, etc.
License: GNU General Public License v3.0
Autor: Ronny Alhelm
GitHub: @roalhelm
Version: 1.6 (2025-12-11)
Module: Microsoft.Graph (AzureAD deprecated)