2011-07-22 13 views
1

私は、ウェブサイト用のftp経由でファイルをアップロードするための以下のスクリプト(ここから適合)を持っています。Webサイト用の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

答えて

2

geekswithblogs.netは、再帰的なFTPのコピーのためのソリューションを持っています。

0

おそらくMicrosoft Documentation can help here

URIは、相対的または絶対的であってもよいです。 URIの形式が "ftp://contoso.com/%2fpath"(%2fはエスケープされた '/')の場合、URIは絶対パスであり、現在のディレクトリは/ pathです。ただし、URIの形式が「ftp://contoso.com/path」である場合は、最初に.NET Frameworkが(Credentialsプロパティで設定されたユーザー名とパスワードを使用して)FTPサーバーにログインし、現在のディレクトリ/ pathに設定されています。コメントから変換要求ごと

関連する問題