2013-03-11 6 views
1

У меня возникают проблемы со сценарием, который должен функционировать как резервная замена. Это только часть дыры, другая вещь работает, но зависит от нее.Сценарий резервного копирования Powershell для нескольких папок

$datum = get-date -uformat "%Y-%m-%d" 
$backupsrv = "\\192.168.0.5\" 
$logpath = "$backupsrv\logs\$datum" 
$test1 = "d:\test1","$backupsrv\b2d\test1","Test1" 
$test2 = "c:\test2","$backupsrv\b2d\test2","Test2" 
$programs = ($test1,$test2) 

if (!(test-path -path $logpath)) 
{new-item $logpath -type directory} 

function backup{ 
    param 
    (
     [Parameter(Position=0,Mandatory=$true)] 
     [String] $Source, 

     [Parameter(Position=1,Mandatory=$true)] 
     [String] $Target, 

     [Parameter(Position=2,Mandatory=$true)] 
     [String] $Name 
    ) 

    if (!(test-path -path $target)) 
    {new-item $target -type directory} 

    $LogFile = "$logpath\$name.log" 

    robocopy "$Source" "$Target" /e /mir /np /ns /z /r:3 /w:30 /xf thumbs.db >>$logfile 
} 
foreach ($program in $programs){ 
    backup $program} 

Я всегда получаю сообщение об ошибке при обработке параметров.

Может ли кто-нибудь помочь мне с этим? Благодаря!!

+0

Вы можете сообщить об ошибке? – anacarolinats

+1

извините, до сих пор не видел вашего комментария ... спасибо в любом случае! – trainee

ответ

1

Он думает, что вы передаете строку [] (которая вы на самом деле) вместо трех отдельных строк. Это на самом деле работает:

foreach ($program in $programs){ 
    backup $program[0] $program[1] $program[2] 
} 

Вы могли установить функцию, чтобы принять массив строк, если вы хотите.

+0

Спасибо за помощь, отлично сработал для меня! – trainee

Смежные вопросы