Immer mal wieder kann es nützlich sein, eine Aktion, als eine "Run once at Startup" Script einmalig als Benutzer oder System beim Start des Computers auszuführen. Intune hat keine "Run once at Startup" Funktion. Darum habe ich zwei Scripts erstellt, mit welchen ich die Möglichkeit habe, eine Änderung oder Bereinigung durchzuführen, bevor der Endbenutzer ein Programm geöffnet hat, oder in einen Fehler läuft. Dies habe ich beispielsweise beim "Clear Microsoft Teams cache once" eingesetzt.

Da ein Script nicht immer mit derselben Berechtigung ausgeführt werden muss, wende ich zwei unterschiedliche Methoden an. Die Erste ist via Scheduled Task und führt das Script als "System" User aus. So ist gewährleistet, dass auch Tasks mit erhöhten Rechten oder beispielsweise für alle User gleichzeitig ausgeführt werden können.
Die zweite Version nützt die Funktion des "RunOnce-Registry Keys". Dadurch wird das Script einmalig als User ausgeführt. Beie Script kannst du sehr einfach mit Intune und somit als "Run once at Startup" verteilen.

Deinen Code fügst du bei beiden Scripts nach dem Kommentar ein und löschst den "Write-Host" Part:

Run once code, Intune

Table of Contents

Run one at Startup - as User

Für die Ausführung eines Tasks als Benutzer gibt es in Windows einen, beziehungsweise zwei einfachen Registry Einträge, welche verwendet werden können.

Dies sind folgende zwei:

  • HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce
  • HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce


Der Erste, welcher im "Current User" ist, führ nur bei dem spezifischen Benutzer selbst den Task aus.
Im zweiten, der sich im "Local Machine" Kontext befindet, wird der Task bei jedem Benutzer einmalig ausgeführt.

In meinem Script habe ich beide Fälle abgefangen.
Wenn du das Script in Intune als PowerShell Script verteilst (Devices > Windows > PowerShell scripts), kannst du in den Optionen bei "Run this script using the logged on credentials", "Ja" oder "Nein" auswählen. Mit "Ja", wird das Script nur auf dem zugewiesenen Benutzer (Das Script sollte dann einer Benutzer Gruppe zugewiesen werden) ausgeführt. Mit "Nein" wird das Script als System ausgeführt und der Registry Eintrag im "Local Machine" Content gesetzt.

Intune PowerShell as user or system

Das Script wird nach der Ausführung nicht gelöscht, da es von mehreren Usern verwendet werden kann.

Run one at Startup - as System

Um das Script einmalig beim Star des Computers als System auszuführen, verwende ich einen "Scheduled Task". Dieser Task wird beim Start ausgeführt, führt dabei sein definiertes Script aus, welches er im Anschluss löscht. Zudem wird auch der "Scheduled Task" selbst gelöscht, sodass auf dem Computer nach der Ausführung, ausser dem Log keine Reste mehr vorhanden sind.

Hier muss bei der Verteilung zwingend die Ausführung als System ausgewählt sein:

Intune, PowerShell run as system