J'ai beaucoup de mal à faire en sorte que ce script ci-dessous fonctionne pour copier les fichiers dans des dossiers et des sous-dossiers dans la structure appropriée (en tant que serveur source).
Disons qu'il existe des dossiers mentionnés ci-dessous:
Dossier principal: fichier aaa, fichier bbb
Sous-dossier a: fichier 1, fichier 2, fichier 3
Sous-dossier b: fichier 4, fichier 5, fichier 6
Script utilisé:
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)"
}
Sortie: Fichier aaa, fichier bbb
Sous-dossier a (dossier vide)
Sous-dossier b (dossier vide)
Fichier 1, fichier 2, fichier 3, fichier 4, fichier 5, fichier 6.
Je veux que les fichiers soient copiés dans leurs dossiers respectifs (comme les dossiers sources). Toute aide supplémentaire est hautement appréciée.
Cela peut être fait simplement en utilisant Copy-Item. Pas besoin d'utiliser Get-Childitem. Je pense que tu réfléchis trop.
Copy-Item -Path C:\MyFolder -Destination \\Server\MyFolder -recurse -Force
Je viens de le tester et cela a fonctionné pour moi.
une fois, j'ai trouvé ce script, ce dossier de copie et les fichiers tout en conservant la même structure de la source dans la destination. Vous pouvez faire quelques essais avec cela.
# 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
}
Si vous souhaitez mettre en miroir le même contenu de la source à la destination, essayez-en un.
function CopyFilesToFolder ($fromFolder, $toFolder) {
$childItems = Get-ChildItem $fromFolder
$childItems | ForEach-Object {
Copy-Item -Path $_.FullName -Destination $toFolder -Recurse -Force
}
}
Tester:
CopyFilesToFolder "C:\temp\q" "c:\temp\w"