2011-07-22 92 views
1

我有以下脚本(改编自这里)通过ftp上传文件的网站。网站的powershell ftp脚本

$files = @(dir -Path $path) 

    foreach ($file in $files) { 
    if ($file.GetType().FullName -eq 'System.IO.FileInfo') { 
     "uploading $file" 
     $uri = New-Object System.Uri($ftp+$file.Name) 
     $webclient.UploadFile($uri, $file.FullName) 
    }elseif ($file.GetType().FullName -eq 'System.IO.DirectoryInfo') { 
     Recurse $file.FullName 
    } 

如果所有文件都转到目录的根目录,这工作正常。我遇到的问题是根目录下有该网站的子目录。这将(根据预期)放置在根上的所有文件,而不管它们在实际目录结构中的位置。

是否有一个简单的方法来传输所有的文件,同时保持源的目录结构。我敢肯定,我可以使用分离路径将各种东西放在一起,但我只是想确保在我进一步探索之前我没有忽视某些东西。

谢谢。

+2

也许看看http://geekswithblogs.net/lance/archive/2006/12/07/100588.aspx? – marc

+0

marc - 这个解决方案已经解决 - 请把它放在一个答案中,以便我可以标记它的答案。 – czuroski

回答

0

也许Microsoft Documentation can help here

的URI可以是相对的或绝对的。如果URI的格式为“ftp://contoso.com/%2fpath”(%2f是转义的'/'),那么URI是绝对的,当前目录是/路径。但是,如果URI的格式为“ftp://contoso.com/path”,则首先.NET Framework登录到FTP服务器(使用由Credentials属性设置的用户名和密码),然后将当前目录被设置为/路径。