私はかなり面白い問題があります。Powershell FTPアップロードで再開
一部のファイルをFTPアカウントに圧縮してアップロード(再開)するスクリプトを作成しました。ローカル私のマシンでは正常に動作しますが、本番環境で私はこのエラーを取得する:「3」引数(複数可)を「置く」を呼び出す
PS> $ftp.Put($fileStream,$file.name,$true);
例外:「ファイル「Cが見つかりませんでした:\ ByAndrew \ PowerShellを\ Transactions \ System.IO.FileStream '。 "ラインで
:1つの文字:9
- $ ftp.Put(< < < < $ファイルストリームは、$ file.name、真$)。ここで
スクリプトです:
$xml = New-Object XML
$xml.Load(".\settings.xml")
[void][Reflection.Assembly]::LoadFrom("D:\Work\Projects\ProjectIndyFTP\Bin\Indy.Sockets.dll")
$ftp = new-object Indy.Sockets.FTP
$ftp.Host = $xml.list.ftp.server
$ftp.Port = $xml.list.ftp.port
$ftp.Username = $xml.list.ftp.user
$ftp.Password = $xml.list.ftp.pass
$ftp.ConnectTimeout = 600
$ftp.Connect()
$file = Get-Item "D:\Work\Projects\ProjectIndyFTP\TestFolder\TestFiles\testfile5M.bin"
#$fileStream = $file.OpenRead()
$fileStream = New-Object System.IO.FileStream($file,[System.IO.FileMode]::Open,[System.IO.FileAccess]::Read,[System.IO.FileShare]::ReadWrite)
$ftp.Put($fileStream,$file.name,$true);
$fileStream.Close()
$ftp.Quit()
exit
< < < < < < < < < < < < < < < < < < < < 私はエラーを理解していません。 What's with "ファイル 'C:\ ByAndrew \ PowerShell \ Transactions \ System.IO.FileStream'が見つかりませんでした。 私は 'path \ object'を意味します 誰もこの行動をする前に遭遇しましたか?任意のヒント?
敬具、 アンドリュー
アップデートを:
今日は本番環境から参照されたアセンブリのバージョンを確認しました: [2.0.50727.1433]にMscoree.dll - 20 SP1を.NET ローカルに私は[2.0.50727.3053] - .net 20 sp2 を問題として除外するために、私は.net 20 sp1でマシンを探しました。エラーを再現しました。 - .netを2.0 sp2に更新してチェックしました。同じ問題。だから私は言った。私は "依存"が間違っているとは思わない。
よろしく、 アンドリュー
質問: 'Indy.Socketsです。dllはあなたのプロダクションコンピュータで使えますか?あなたのローカルマシンと同じ場所に、すべてのアセンブリが必要ですか?あなたのローカルマシンの 'C:\ ByAndrew \ PowerShell \ Transactions'パスには何がありますか? 'Indy.Sockets.dll'によって参照されるアセンブリはありませんか? – JPBlanc
はい、このパスを使用できます: "c:\ ByAndrew \ PowerShell \ Transactions \ IndyFTP \ Indy.Sockets.dll" いいえ、ローカルマシンと同じ場所にありません。 ローカルマシンのフォルダを本番環境の別のパスにコピーし、新しいパスと一致するように設定を調整しました。 参照されるアセンブリは "mscoree.dll"です。私はその組立に問題があるとは思わない。私はそれをテストし、うまく見える。 –