wake-up-neo.net

Kopierelement Dateien in Ordnern und Unterordnern in derselben Verzeichnisstruktur des Quellservers mit PowerShell

Ich bemühe mich wirklich sehr darum, dass dieses Skript unten funktioniert, um die Dateien in Ordnern und Unterordnern in der richtigen Struktur (als Quellserver) zu kopieren.

Nehmen wir an, es gibt Ordner, die unten aufgeführt sind:

Hauptordner: Datei aaa, Datei bbb

Unterordner a: Datei 1, Datei 2, Datei 3

Unterordner b: Datei 4, Datei 5, Datei 6

Skript verwendet:

Get-ChildItem -Path \\Server1\Test -recurse | ForEach-Object {
Copy-Item -LiteralPath $_.FullName -Destination \\server2\test |
Get-Acl -Path $_.FullName | Set-Acl -Path "\\server2\test\$(Split-Path -Path $_.FullName -Leaf)"

}

Ausgabe: Datei aaa, Datei bbb

Unterordner a (leerer Ordner)

Unterordner b (leerer Ordner)

Datei 1, Datei 2, Datei 3, Datei 4, Datei 5, Datei 6.

Ich möchte, dass die Dateien in ihre jeweiligen Ordner kopiert werden (wie die Quellordner). Jede weitere Hilfe wird sehr geschätzt.

25
user1926332

Dies kann nur mit Copy-Item erfolgen. Keine Notwendigkeit, Get-Childitem zu verwenden. Ich denke, du denkst nur darüber nach.

Copy-Item -Path C:\MyFolder -Destination \\Server\MyFolder -recurse -Force

Ich habe es gerade getestet und es hat für mich funktioniert.

55
Kevin_

einmal fand ich dieses Skript, diesen Kopierordner und Dateien und behielt die gleiche Struktur der Quelle im Ziel. Sie können einige Versuche damit machen.

# Find the source files
$sourceDir="X:\sourceFolder"

# Set the target file
$targetDir="Y:\Destfolder\"
Get-ChildItem $sourceDir -Include *.* -Recurse |  foreach {

    # Remove the original  root folder
    $split = $_.Fullname  -split '\\'
    $DestFile =  $split[1..($split.Length - 1)] -join '\' 

    # Build the new  destination file path
    $DestFile = $targetDir+$DestFile

    # Move-Item won't  create the folder structure so we have to 
    # create a blank file  and then overwrite it
    $null = New-Item -Path  $DestFile -Type File -Force
    Move-Item -Path  $_.FullName -Destination $DestFile -Force
}
1
Aratan

Wenn Sie denselben Inhalt von der Quelle zum Ziel spiegeln möchten, versuchen Sie es mit folgendem Inhalt.

function CopyFilesToFolder ($fromFolder, $toFolder) {
    $childItems = Get-ChildItem $fromFolder
    $childItems | ForEach-Object {
         Copy-Item -Path $_.FullName -Destination $toFolder -Recurse -Force
    }
}

Prüfung:

CopyFilesToFolder "C:\temp\q" "c:\temp\w"
0
Teoman shipahi