将参数传递给Powershell函数不起作用

时间:2013-03-19 16:23:17

标签: powershell

$backupfolder = "\\server\somefolder1\somefolder2\"
$localpath="C:\Documents and Settings\myname\My Documents\FilestoCopytoServer\folder1\"

foreach ($dir in $localpath)
{
    write-host $dir
    if(test-path $dir.fullname -pathtype container)
        {
            write-host "it's a directory"
            write-host "check if this directory is in the remote machine or not"
            $direxists = test-path $remotepath\$dir -pathtype container
                if($direxists)
                {
                write-host "remote machine has this directory"
                recurseandcopyfiles($dir)

            }
             else
            {
            write-host "directory does not exist so create directory"

            createdir($remotepath,$dir)


            }

    }
    else
    {
        write-host "it's not a container so copy files"
        write-host $dir "and backup folder is " $backupfolder

        backup( $dir,$backupfolder)


      }
}

function backup($source,$destination)
{
write-host "inside backup"
write-host "source is " $source "and destination" is $destination
#this is showing I'm getting following: 
# source is  file1.txt \\server\somefolder1\somefolder2\
}

$ localpath有file1.txt所以,备份函数的第一个参数是file1.txt。 函数备份有两个参数,但第一个参数同时获取传递的值。这有什么问题?

1 个答案:

答案 0 :(得分:1)

问题在于你正在调用backup方法,就像你猜测的那样。

在PowerShell中,您不需要使用parantheses,而是使用空格“”分隔参数。另外,逗号,用于创建数组。

因此,在上面的示例中,您将$source等于一个以$dir$backupfolder为对象的数组。

尝试:

backup $dir $backupfolder