我有以下脚本(改编自此处),用于通过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
}
如果所有文件都转到目录的根目录,这样可以正常工作。我遇到的问题是根目录下有站点的子目录。这将(根据需要)放置在根目录下的所有文件,而不管它们在实际目录结构中的位置。
是否有一种简单的方法来传输所有文件,同时保持源的目录结构。我确信我可以使用分离路径将某些东西放在一起,但我只是想确保在进一步使用之前我没有忽略某些东西。
感谢。
答案 0 :(得分:2)
根据评论转换的每个请求:
geekswithblogs.net有一个递归FTP拷贝的解决方案。
答案 1 :(得分:0)
也许是Microsoft Documentation can help here:
URI可以是相对的或绝对的。如果URI的格式为“ftp://contoso.com/%2fpath”(%2f是转义'/'),那么URI是绝对的,当前目录是/ path。但是,如果URI的格式为“ftp://contoso.com/path”,则首先.NET Framework登录到FTP服务器(使用Credentials属性设置的用户名和密码),然后是当前目录设置为/ path。