Bald ist Weihnachten! Und passend dazu habe ich das PowerShell Modul "IntuneStarterKit" geschrieben, welches ich Santa für den "Festive Tech Calendar 2022" mitgegeben habe. Mit dem Modul kannst du sehr schnell eine Grundkonfiguration mit Autopilot, ein paar Apps sowie Windows- und Security-Konfiguration zusammenstellen. So startest du ohne viel Aufwand und Klicks mit dem Management von Windows Geräten mit Intune, beziehungsweise hast das Deployment automatisiert.

Table of Contents

Kurzübersicht

Die Hauptfunktion des Moduls heisst "Add-ISK" und ruft alle weiteren Funktionen auf, um dir Folgendes bereitzustellen:

Modul installieren

Um zu starten, musst du als Erstes das Modul bei dir installieren, das kannst du entweder System weit oder auch nur in deinem User Kontext.

# Installation on local machine (as Admin)
Install-Module -Name IntuneStarterKit

# Installation in user context (no Admin needed)
Install-Module -Scope CurrentUser -Name IntuneStarterKitCode language: PowerShell (powershell)

Bei Problemen bei der Installation, der Authentifizierung oder Modul-Konflikten empfehle ich dir, das Modul in einer Windows Sandbox zu testen. Dann bist du sicher, dass keine alte Modulversion oder etwas anderes auf deinem PC dazwischenfunkt.

Intune Umgebung mit dem IntuneStarterKit erstellen

Die gesamte Umgebung kannst du nach der Installation des Moduls ganz einfach bereitstellen. Im Grunde sogar nur mit dem Befehl "Add-ISK". Aber es gibt noch ein paar Parameter, die du anfügen kannst. So beispielsweise der -Language Parameter, da sonst die Sprache auf "de-CH" sein wird.
Weiter unten folgen einige Beispiele.

Und damit hast du das Intune Deployment automatisiert. (Zumindest mit meiner Vorlage)
Hier auch noch der ganze Vorgang in einem GIF:

IntuneStarterKit, Demo Add-ISK

Und hier die versprochenen Beispiele für eigene Gruppen und Sprachen, aber es kommt noch mehr. Auch Konfigurationen und Apps kannst du nach Belieben einspielen.

# Deploy with an English Autopilot profile (en-us)
Add-ISK -Language "en-us"

# Deploy with different default groups
Add-ISK -APGroupName "WIN-Devices_Autopilot" -StdGroupName "WIN-StandardConfiguration"

# Deploy without a group per app installation
Add-ISK -AppGroup:$falseCode language: PowerShell (powershell)

Eigene Konfiguration verwenden

Um deine eigene Konfigurationsvorlage zu verwenden, kannst du dir die Konfiguration, so wie sie dir gefällt, in Intune zusammenstellen und mit dem Modul "IntuneBackupAndRestore" exportieren.

Für den Export musst du lediglich den Backup Befehl mit der Pfadangabe absetzten:
Start-IntuneBackup -Path "C:\temp\IntuneBackup"

Anschliessend hast du deine eigene Konfigurationsfiles zusammen und kannst diese importieren.
(Die Variabel $GroupID ist dabei die ID der Gruppe, der die Konfigurationen zugewiesen werden. )
Add-ISKConfiguration -AssignTo $GroupID -Path "C:\temp\IntuneBackup"

Du kannst die Konfiguration auch in einem GitHub Repository ablegen (aktuell nur öffentlich) und dann beim Pfad die URL dazu angeben:
Add-ISKConfiguration -AssignTo $GroupID -Path "https://github.com/FlorianSLZ/.../Configuration"

Eigene Apps verwenden

Wie bei der Konfiguration kannst du auch bei den Apps deine eigenen angeben. Dazu baust du dir ein Repository im korrekten Format auf. Du packst jedes Win32 App in einen eigenen Ordner mit dem App-Name, in welchem sich das Installwin ebenfalls mit dem App-Namen befindet. Zusätzlich legst du ein Validierungs-Script mit dem Namen "check.ps1" ab.
Falls du noch nie ein Win32 App erstellt hast, findest du auf meinem Blog in der Kategorie "Win32" einige Hilfestellungen und Vorlage: Win32 | scloud

Die Programme/Ordner müssen so aufgebaut sein:

DateiZweck
install.ps1Installations-Routine
uninstall.ps1Deinstallations-Routine
check.ps1Validierungs-Script
AppName.intunewinIntunewinfile der App

Und das Repository visualisiert, sieht so aus:

App Repository Visualisierung

Der Befehl, um diese Apps zu importieren und zuzuweisen ist:

# Add and assign App to Group with ID
Add-ISKApps -AssignTo $GroupID -Path "C:\temp\Repository"

# Add and assign App to individual grou per App and add Group with ID as member
Add-ISKApps -AssignTo $GroupID -AppGroup -Path "C:\temp\Repository"

# only add apps (without assigning)
Add-ISKApps -Path "C:\temp\Repository"
Code language: PowerShell (powershell)


Eigenes Deployment erstellen

Hast du die eigenen Apps und Konfigurationen zusammen, hast du alle Voraussetzungen, um dir auch ein eigenes Deployment Script zu schreiben.
Hier zwei Beispiele wie dies aussehen könnte:

# Option 1: Custom Language, Apps, Config and Group names
Add-ISK `
-APGroupName "My-AP-Group" `
-StdGroupName "My-Default-Group" `
-Language "de-CH" `
-AppGroupPrefix "My-App-" `
-AppRepoPath "C:\ISK\Apps" `
-ConfigRepoPath "C:\ISK\Configuration"

# Option 2: Only Autopilot Profile, Apps and Configuration with custom dynamic "marketing" Group
## create dynamic group based on group tag "Marketing"
$APGroupTag = New-MgGroup -DisplayName "DEV-WIN-Marketing" `
-Description "Autopilot group tag: Marketing" `
-MailEnabled:$false `
-SecurityEnabled:$true `
-MailNickname "DEV-WIN-Marketing" `
-GroupTypes "DynamicMembership" `
-MembershipRule '(device.devicePhysicalIds -any (_ -eq "[OrderID]:Marketing"))' `
-MembershipRuleProcessingState "On"
## create Autopilot profile for Marketing
Add-ISKAPProfile -Name "Marketing" -AssignTo $APGroupTag.id -Language "en-UK"
## Import configuration and assign to Marketing group
Add-ISKConfiguration -Path "C:\ISK\Configuration" -AssignTo $APGroupTag.id
## Import Apps for marketing and assign them
Add-ISKApps -Path "C:\ISK\Apps" -AssignTo $APGroupTag.id
Code language: PowerShell (powershell)

Credits #CommunityRocks

Natürlich habe ich nicht alle Funktionen von Grund auf neu aufgebaut. Viele Teile wurden bereits von anderen Community-Mitgliedern erarbeitet oder in einer ähnlichen Form gebraucht.
Folgende Quellen haben mir massgeblich geholfen: