Как использовать Robocopy в Powershell для цикла с использованием массивов? - PullRequest
1 голос
/ 01 июля 2019

Мы переносим две акции, скажем, oldShare на newShare.Я никогда раньше не использовал Robocopy, но, судя по моему поиску, мне кажется, что именно это я и должен использовать для этой задачи.Каталог файлов настроен по-разному на общих ресурсах, поэтому мне нужно использовать несколько команд Robocopy, а не одну.Используя мои базовые знания в области программирования и еще немного прибегнув к поиску в Powershell, я разработал сценарий для запуска нового ресурса:

$source_array=@("\\DC02\ArchivedData\IT-Backups", "\\DC02\Contractors", "\\DC02\DataLoad", "\\DC02\Infrastructure", "\\DC02\Support")
$destination_array=@("S:\Shares\COMPANYNAME\IT\Archives", "S:\Shares\COMPANYNAME\Public\Contractors", "S:\Shares\COMPANYNAME\Dataload", "S:\Shares\COMPANYNAME\IT\Infrastructure", "S:\Shares\COMPANYNAME\Public\Support")
for ($i=0; $i -lt $source_array.length; $i++) {

    $date=(Get-Date -format dd-MM-yyyy_hh:mm:ss_tt)
    robocopy $source_array[$i] $destination_array[$i] /e /zb /copyall /r:3 /w:3 /xo /log:c:\ROBOCOPY_Logs\$date.log /V /NP

}

Правильно ли это выглядит?Я просто хочу удостовериться, что не собираюсь ничего портить, потому что я никогда раньше не использовал Robocopy или Powershell.

1 Ответ

0 голосов
/ 01 июля 2019

Были некоторые синтаксические ошибки (двоеточие в имени файла Windows, что-то в этом роде), но часть Powershell была хороша. Спасибо за предложение / L.

Мой последний сценарий:

$source_array=@('\\DC02\ArchivedData\IT-Backups', '\\DC02\Contractors', '\\DC02\DataLoad', '\\DC02\Infrastructure', '\\DC02\Support')
$destination_array=@('S:\Shares\COMPANYNAME\IT\Archives', 'S:\Shares\COMPANYNAME\Public\Contractors', 'S:\Shares\COMPANYNAME\Dataload', 'S:\Shares\COMPANYNAME\IT\Infrastructure', 'S:\Shares\COMPANYNAME\Public\Support')

for ($i=0; $i -lt $source_array.length; $i++) {

    $date=(Get-Date -format mm-dd-yyyy_hh-mm-ss_tt)
    $filename=('robocopy_iteration' + '_' + $i + '_' + $date)

    # robocopy $source_array[$i] $destination_array[$i] /V /L /TEE /E /COPYALL /ZB /ETA /XO /R:3 /W:3 /LOG:C:\Users\USER\Desktop\$filename.log
    # /L means this is a test, it won't actually copy. Rather it will tell you what will be copied, skipped, etc. 

    robocopy $source_array[$i] $destination_array[$i] /V /TEE /E /COPYALL /ZB /ETA /XO /R:3 /W:3 /LOG:C:\Users\USER\Desktop\$filename.log

}
...