Skip to main content

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