2015-06-19 42 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

这个伎俩..谢谢! –

相关问题