Kopieren von Ordnern mit Anzahllimitierung
Zweck des Skripts
Dieses Skript kopiert eine definierte Anzahl von Unterordnern aus einem Netzlaufwerk (Quellpfad) in ein lokales Testverzeichnis. Es dient primär zum Testen von Kopier- oder Migrationsvorgängen, ohne die vollständige Struktur eines Produktionsverzeichnisses zu übernehmen.
Einsatzszenario
Das Skript ist besonders hilfreich für:
-
Testmigrationen (z. B. auf einen neuen Server oder in die Cloud),
-
Vorab-Analysen hinsichtlich Dateiberechtigungen oder Datenmengen,
-
Aufbau von Testumgebungen mit begrenztem Datenumfang,
-
Validierung von Kopiervorgängen mit Tools wie Robocopy.
Beispiel: Es werden 50 Ordner aus \\XXX.XXX.XXX.XXX\IABCnach C:\Test kopiert.
Voraussetzungen
-
Zugriff auf Quellpfad (Netzlaufwerk muss erreichbar sein).
-
Schreibrechte im Zielverzeichnis.
-
Robocopy ist Bestandteil moderner Windows-Versionen (ab Windows Vista / Server 2008 standardmäßig verfügbar).
# Quellpfad
$sourcePath = "\\XXX.XXX.XXX.XXX\ABC"
# Zielpfad
$destinationPath = "C:\Test"
# Anzahl der zu kopierenden Ordner zum testen. Muss später herausgenommen werden.
$folderLimit = 50
# Prüfen, ob Zielordner existiert, ansonsten erstellen
if (-not (Test-Path -Path $destinationPath)) {
New-Item -ItemType Directory -Path $destinationPath | Out-Null
}
# Holen der ersten $folderLimit Ordner (nur Verzeichnisse filtern)
$foldersToCopy = Get-ChildItem -Path $sourcePath | Where-Object { $_.PSIsContainer } | Select-Object -First $folderLimit
foreach ($folder in $foldersToCopy) {
# Zielpfad für den aktuellen Ordner
$destinationFolder = Join-Path -Path $destinationPath -ChildPath $folder.Name
# Ordner und Inhalte kopieren
Robocopy $folder.FullName $destinationFolder /E /COPYALL /DCOPY:T /R:3 /W:5
Write-Host "Kopiere Ordner: $($folder.FullName) nach $destinationFolder" -ForegroundColor Green
}
Write-Host "Kopiervorgang abgeschlossen!" -ForegroundColor Green