it-swarm.dev

نسخ ملفات العناصر في مجلدات ومجلدات فرعية في نفس بنية الدليل للخادم المصدر باستخدام PowerShell

أنا أصعب بجد للحصول على هذا البرنامج النصي أدناه عملت لنسخ الملفات في المجلدات والمجلدات الفرعية في الهيكل المناسب (مثل الخادم المصدر).

دعنا نقول ، هناك مجلدات المذكورة أدناه:

المجلد الرئيسي: ملف aaa ، ملف bbb

المجلد الفرعي أ: ملف 1 ، ملف 2 ، ملف 3

المجلد الفرعي ب: ملف 4 ، ملف 5 ، ملف 6

النص المستخدم:

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)"

}

الإخراج: ملف aaa ، ملف bbb

مجلد فرعي (مجلد فارغ)

مجلد فرعي ب (مجلد فارغ)

ملف 1 ، ملف 2 ، ملف 3 ، ملف 4 ، ملف 5 ، ملف 6.

أريد نسخ الملفات إلى المجلدات الخاصة بها (مثل المجلدات المصدر). أي مساعدة أخرى هي محل تقدير كبير.

27
user1926332

ويمكن القيام بذلك فقط باستخدام نسخة البند. لا حاجة لاستخدام Get-Childitem. أعتقد أنك مجرد التفكير فيه.

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

لقد اختبرت ذلك وعملت لي.

61
Kevin_

مرة واحدة وجدت هذا البرنامج النصي ، هذا المجلد نسخة والملفات والحفاظ على نفس هيكل المصدر في الوجهة ، يمكنك جعل بعض المحاولات مع هذا.

# 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

إذا كنت تريد نسخ المحتوى نفسه من مصدر إلى آخر ، فحاول اتباعه.

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

اختبار:

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