2015-06-19 47 views
0

簡單的PowerShell腳本。它下載一個沒有問題的文件(二進制文件)。我需要它在ascii。使用WebClient在PowerShell腳本中將FTP從二進制更改爲ascii

$File = "c:\temp\ftpfile.txt" 
$ftp = "ftp://myusername:[email protected]/'report'"; 
$webclient = New-Object -TypeName System.Net.WebClient; 
$uri = New-Object -TypeName System.Uri -ArgumentList $ftp; 
$webclient.DownloadFile($uri, $File); 
+0

源文件是否在ascii中?它在Unicode中嗎?還有別的嗎? –

回答

0

WebClient不支持ascii/text FTP模式。

改爲使用FtpWebRequest,並將.UseBinary設置爲false。

$File = "c:\temp\ftpfile.txt" 
$ftp = "ftp://myusername:[email protected]/'report'"; 

$ftprequest = [System.Net.FtpWebRequest]::Create($ftp) 

$ftprequest.Method = [System.Net.WebRequestMethods+Ftp]::DownloadFile 
$ftprequest.UseBinary = $false 

$ftpresponse = $ftprequest.GetResponse() 

$responsestream = $ftpresponse.GetResponseStream() 

$targetfile = New-Object IO.FileStream($File, [IO.FileMode]::Create) 
[byte[]]$readbuffer = New-Object byte[] 1024 

do 
{ 
    $readlength = $responsestream.Read($readbuffer, 0, 1024) 
    $targetfile.Write($readbuffer, 0, $readlength) 
} 
while ($readlength -ne 0) 

$targetfile.close() 

參考:What's the best way to automate secure FTP in PowerShell?


注意,WebClient內部使用的FtpWebRequest,但不公開其.UseBinary財產。

+0

這個伎倆..謝謝! –

相關問題