3

ディレクトリリストを取得してファイル名を見つけることに基づいて、FTP サイトから zip ファイルをダウンロードしようとしています。

ダウンロード部分:

$folderPath='ftp://11.111.11.11/'
$target = "C:\Scripts\ps\ftpdl\"

Foreach ($file in ($array | where {$_ -like "data.zip"})) {

$Source = $folderPath+$file
$Path = $target+$file

#$Source = "ftp://11.111.11.11/data.zip"
#$Path = "C:\Scripts\ps\ftpdl\data.zip"

$source
Write-Verbose -Message $Source -verbose
$path
Write-Verbose -message $Path -verbose

$U = "User"
$P = "Pass"
$WebClient2 = New-Object System.Net.WebClient
$WebClient2.Credentials = New-Object System.Net.Networkcredential($U, $P)
$WebClient2.DownloadFile( $source, $path )  
}

コメントアウトされたものを使用して文字列を定義すると、正しくダウンロードされます。しかし、示されているように実行すると、パスに不正な文字という例外エラーが表示されます。興味深いことに、write-verbose と not には違いがあります。

次のように実行した場合の出力:

ftp://11.111.11.11/data.zip
data.zip
C:\Scripts\ps\ftpdl\data.zip
data.zip
Exception calling "DownloadFile" with "2" .........

ハードコーディングされたパスとソースで実行した場合の出力

ftp://11.111.11.11/data.zip
VERBOSE: ftp://11.111.11.11/data.zip
C:\Scripts\ps\ftpdl\data.zip
VERBOSE: C:\Scripts\ps\ftpdl\data.zip    

そして、ファイルはうまくダウンロードされます。

4

1 に答える 1