Deployment Artikel

Copy-WithProgress im Deployment, mit PSADT und in Nacharbeiten.

Die Funktion ist besonders dann stark, wenn Dateien nicht nur kopiert, sondern betriebsfest behandelt werden muessen: mit Logging, Rueckgabewerten, Warnungen und klarer Trennung zwischen Erfolg, Skip und Fehler.

Typische Einsatzfaelle

Herstellerdateien nach der Installation an den richtigen Ort bringen, Vorlagen verteilen, Konfigurationen nachziehen, Detection-Hilfsdateien schreiben oder Caches fuer spaetere Schritte aufbauen.

Warum das besser ist als rohes Copy-Item

Weil du am Ende nicht raten musst, was passiert ist. Die Funktion liefert Zahlen, Warnungen, Skip-Informationen und einen klaren Success-Status.

PowerShell
$copyResult = Copy-WithProgress `
  -CopySource "$dirFiles\SupportFiles" `
  -CopyDestination "$env:ProgramData\Company\App" `
  -LogFile $logFile `
  -OnlyIfChanged

if (-not $copyResult.Success) {
  throw "Dateikopie fehlgeschlagen: $($copyResult.Message)"
}

Write-Log -Path $logFile -Component 'PostInstall' -Type Info -Message (
  "Kopiert: {0}, Uebersprungen: {1}, Bytes: {2}" -f
  $copyResult.FilesCopied,
  $copyResult.FilesSkipped,
  $copyResult.BytesCopiedReadable
)

PSADT-Nutzen

Die Funktion passt gut in Pre-Install-, Install- oder Post-Install-Phasen, weil sie ein Ergebnisobjekt zurueckgibt und sich damit sauber in Toolkit-Logik integrieren laesst.

MEM/SCCM-Nutzen

Wenn Dateikopien Bestandteil des Paketierungsprozesses sind, brauchst du nachvollziehbare Logs und einen klaren Fehlerzustand. Genau das liefert die Funktion.

Zeitstempel-Warnungen ernst nehmen

Dass die Funktion Zeitstempelprobleme nicht still verschweigt, sondern als Warnungen sammelt, ist fuer Betrieb und spaetere Analyse ein echter Vorteil.

Was ich im Artikel betonen wuerde

Die Funktion ist nicht nur ein Kopierhelfer, sondern ein kontrollierter Deployment-Baustein. Das unterscheidet sie von vielen schnellen Ad-hoc-Skripten.