Skip to main content

OneDrive als Laufwerk bereitstellen

In vielen Fällen stehen wir vor der Herausforderung, dass Programme oder Arbeitsabläufe feste Laufwerksbuchstaben voraussetzen und keine dynamischen Pfade (z.B. mit %USERPROFILE%) zulassen. Genau hier kann das Einbinden eines OneDrive-Ordners als virtuelles Laufwerk helfen.


Warum OneDrive als Laufwerk?

  • Zentraler Speicherort: Daten liegen in OneDrive und sind dadurch automatisch gesichert und synchronisiert.
  • Fester Pfad: Anstatt jedes Mal %USERPROFILE% oder andere Variablen angeben zu müssen, steht ein Laufwerksbuchstabe (z.B. W:) zur Verfügung.
  • Kompatibilität: Ältere Programme (z.B. SFIRM, DATEV etc.) akzeptieren oft nur feste Buchstabenpfade; das geht mit subst problemlos.

Kernidee: subst

subst ist ein Windows-Kommando, um einen lokalen Ordner als virtuelles Laufwerk bereitzustellen. Wird dieser Ordner synchronisiert (z.B. mit OneDrive), erhält man einen Cloud-gestützten Laufwerksbuchstaben.


Aufbau der Skripte

Um das Ganze automatisiert und updatefähig zu machen, empfiehlt es sich, mehrere Skripte zu verwenden:

  1. Batch-Skript (OneDriveMappingSilent.cmd):
    • Enthält die subst-Befehle (und optional das label-Kommando), um den OneDrive-Ordner auf einen Laufwerksbuchstaben (z.B. W:) zu legen.
    • Wird bei jedem Benutzer-Login ausgeführt und läuft still, ohne Bestätigungen.
  2. Installations-Skript (z.B. Install.ps1):
    • Kopiert das Batch-Skript in den Autostart-Ordner aller Benutzer (z.B. %ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup).
    • Schreibt eine Versionsinformation (z.B. 1.0.0) in die Registry, damit Intune die Installation erkennen kann.
  3. Erkennungs-Skript (z.B. Detect.ps1):
    • Liest die Registry-Version aus.
    • Gibt exit 0 zurück, wenn die Version übereinstimmt (Erfolg), sonst exit 1.
  4. (Optional) Uninstall-Skript:
    • Löscht das Batch-Skript wieder aus dem Autostart.
    • Entfernt den Registry-Key.
    • Löst ggf. das Laufwerk per subst W: /d.

Mit diesen Skripten kann man ein Win32-App-Paket für Intune bauen, das sich sauber installieren, überwachen und (falls nötig) wieder deinstallieren lässt.


Schritt-für-Schritt: Beispielhafte Umsetzung mit Intune

1) Autostart-Batch (OneDriveMappingSilent.cmd)

@echo off

:: Laufwerksbuchstabe
set "DRIVELETTER=W:"

:: Pfad zum OneDrive-Verzeichnis
set "ONEDRIVEPATH=%USERPROFILE%\elbcloud\Dokumente"

:: Altes Mapping entfernen (falls vorhanden) und neues erstellen
subst %DRIVELETTER% /d >nul 2>nul
subst %DRIVELETTER% "%ONEDRIVEPATH%" >nul 2>nul

:: Optional: Laufwerkslabel vergeben
label %DRIVELETTER% "OneDrive-Map" >nul 2>nul

:: Fertig
exit /b 0
  • Wird bei jedem Login ausgeführt.
  • >nul 2>nul unterdrückt Ausgaben und Fehlermeldungen.
  • %USERPROFILE%\elbcloud\Dokumente steht stellvertretend für deinen lokalen OneDrive-Pfad.

2) Installationsskript (Install.ps1)

param(
    [string]$Version = "1.0.0"
)

# 1) Ort, wo die Intune-Dateien entpackt werden
$SourceCmd = Join-Path $PSScriptRoot "OneDriveMappingSilent.cmd"

# 2) Globaler Autostart-Ordner
$StartupFolder = Join-Path $env:ProgramData "Microsoft\Windows\Start Menu\Programs\Startup"
$TargetCmd = Join-Path $StartupFolder "OneDriveMappingSilent.cmd"

# 3) Skript in den Autostart kopieren
Copy-Item -Path $SourceCmd -Destination $TargetCmd -Force

# 4) Registry-Pfad für Version
$RegPath = "HKLM:\SOFTWARE\MyCompany\OneDriveMapping"
if (-not (Test-Path $RegPath)) {
    New-Item -Path $RegPath -Force | Out-Null
}
Set-ItemProperty -Path $RegPath -Name Version -Value $Version -Force

# Bei Erfolg Exit 0
exit 0

3) Erkennungsskript (Detect.ps1)

param(
    [string]$RequiredVersion = "1.0.0"
)

$RegPath = "HKLM:\SOFTWARE\MyCompany\OneDriveMapping"
$RegName = "Version"

try {
    $currentVersion = (Get-ItemProperty -Path $RegPath -Name $RegName -ErrorAction Stop).Version
    if ($currentVersion -eq $RequiredVersion) {
        exit 0
    }
    else {
        exit 1
    }
}
catch {
    exit 1
}
  • Vergleicht, ob in HKLM:\SOFTWARE\MyCompany\OneDriveMapping derselbe Wert wie $RequiredVersion steht.
  • Wenn ja → exit 0 = „installiert“, sonst → exit 1.

4) (Optional) Uninstall-Skript

Ein Uninstall.ps1 könnte so aussehen:

# Pfade
$StartupFolder = Join-Path $env:ProgramData "Microsoft\Windows\Start Menu\Programs\Startup"
$TargetCmd = Join-Path $StartupFolder "OneDriveMappingSilent.cmd"
$RegPath = "HKLM:\SOFTWARE\MyCompany\OneDriveMapping"

# 1) CMD-Datei im Autostart löschen
Remove-Item $TargetCmd -Force -ErrorAction SilentlyContinue

# 2) Registry-Key entfernen
Remove-Item $RegPath -Recurse -Force -ErrorAction SilentlyContinue

# 3) SUBST-Laufwerk ggf. aushängen
subst W: /d

exit 0

Damit kann Intune die Anwendung auch wieder sauber entfernen.


Ablauf in Intune (Win32-App)

  1. Quellordner vorbereiten: Lege OneDriveMappingSilent.cmd, Install.ps1, Detect.ps1, ggf. Uninstall.ps1 in einen Ordner.
  2. IntuneWinAppUtil.exe nutzen: Erstelle daraus ein .intunewin-Paket.
  3. Win32-App in Intune erstellen:
    • App package file: deine .intunewin-Datei
    • Install command: z.B. powershell.exe -ExecutionPolicy Bypass -File .\Install.ps1 -Version 1.0.0
    • Uninstall command (wenn du ein Uninstall-Skript hast): powershell.exe -ExecutionPolicy Bypass -File .\Uninstall.ps1
    • Detection rules: „Use a custom script“ = Detect.ps1, Parameter -RequiredVersion 1.0.0
    • Assignments: Weisen Sie die App z.B. einer Benutzergruppe „Fibu“ zu.

Einsatz im Arbeitsalltag

Sobald sich ein Nutzer anmeldet, startet das Skript aus dem Autostart-Ordner und legt das OneDrive-Verzeichnis auf W:. Programme wie SFIRM, DATEV, Excel etc. können dann direkt auf W: zugreifen, ohne dass sie die interne OneDrive-Ordnerstruktur kennen.

Vorteile

  • Benutzerfreundlich: Nutzer sehen nur ein Laufwerk W: anstatt langer Pfade.
  • Konsistente Pfade: Unabhängig vom Benutzernamen oder PC-Standort.
  • Sicherheit & Synchronisation: OneDrive kümmert sich um die Cloud-Seite und die lokale Synchronisation.

Fazit

Mit dem subst-Befehl und einem kleinen Skript-Setup lassen sich OneDrive-Ordner als feste Windows-Laufwerke bereitstellen. In Kombination mit Intune ist eine automatisierte Verteilung und Verwaltung (inkl. Versionierung und Deinstallation) unkompliziert möglich. So lassen sich problemlos auch ältere Anwendungen bedienen, die keine Variablenpfade akzeptieren.


Hinweis: Alle Code-Beispiele sind leicht anpassbar. Wichtig ist nur:

  • Der OneDrive-Pfad muss für jeden Benutzer existieren.
  • subst-Laufwerke sind standardmäßig benutzerbezogen (Session-spezifisch).
  • Bei Änderungen (z.B. anderer Pfad) sollte die Versionsnummer hochgesetzt werden, damit Intune eine Neuinstallation anstößt.

Geschrieben von:

Letzte Änderung:
27.03.2025