Deployment Snippet

Als SYSTEM eine Datei in alle Benutzerprofile kopieren.

Das ist ein klassischer Deployment-Fall in MECM oder PSADT: eine Datei soll im Kontext NT-AUTORITAET\SYSTEM auf dem Rechner laufen, aber fuer alle lokalen Benutzerprofile an den richtigen Ort verteilt werden.

Worauf man achten muss

Nicht jedes Verzeichnis unter C:\Users ist ein echtes Benutzerprofil. Standardprofile, oeffentliche Profile oder Servicekonten muessen je nach Ziel bewusst ausgeschlossen werden.

Typischer Einsatz

Voreinstellungen in AppData\Roaming, Vorlagen, Konfigurationsdateien oder kleine Hilfsdateien, die fuer mehrere bereits vorhandene Benutzerprofile bereitgestellt werden muessen.

PowerShell
$sourceFile = "$dirFiles\UserConfig\settings.json"
$profiles = Get-ChildItem 'C:\Users' -Directory | Where-Object {
    $_.Name -notin @('Default', 'Default User', 'Public', 'All Users')
}

foreach ($profile in $profiles) {
    $targetFolder = Join-Path $profile.FullName 'AppData\Roaming\Company\App'
    $targetFile = Join-Path $targetFolder 'settings.json'

    if (-not (Test-Path $targetFolder)) {
        New-Item -Path $targetFolder -ItemType Directory -Force | Out-Null
    }

    Copy-Item -LiteralPath $sourceFile -Destination $targetFile -Force
    Write-Log -Path $logFile -Component 'UserProfileCopy' -Type Info -Message "Datei kopiert nach $targetFile"
}

Mit PSADT

Typisch waere das im Post-Install-Bereich, nachdem die eigentliche Anwendung installiert wurde. So bleibt die Logik klar getrennt vom Setup-Aufruf.

Mit MECM

Wenn das Paket als SYSTEM laeuft, ist dieses Muster oft einfacher als mehrere Benutzerinstallationen. Wichtig ist aber, vorhandene und zukuenftige Benutzerprofile fachlich zu unterscheiden.

Wichtige Grenze

Dieses Muster verteilt nur in bereits existierende Profile. Wenn auch neue Benutzer spaeter dieselbe Datei bekommen sollen, braucht es zusaetzlich ein Default-Profile-, Active Setup- oder First-Run-Konzept.

Besser mit Logging kombinieren

Gerade bei Mehrbenutzerprofilen ist Logging Pflicht, damit spaeter sichtbar bleibt, fuer welche Profile erfolgreich kopiert wurde und wo Berechtigungen oder Pfade Probleme machten.