0

Simple PowerShell script. It downloads a file (in binary) with no issues. I need it in ascii.

$File = "c:\temp\ftpfile.txt"
$ftp = "ftp://myusername:mypass@12.345.6.78/'report'";
$webclient = New-Object -TypeName System.Net.WebClient;
$uri = New-Object -TypeName System.Uri -ArgumentList $ftp;
$webclient.DownloadFile($uri, $File);
Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992

1 Answers1

1

The WebClient does not support ascii/text FTP mode.

Use FtpWebRequest instead and set .UseBinary to false.

$File = "c:\temp\ftpfile.txt"
$ftp = "ftp://myusername:mypass@12.345.6.78/'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)

$responsestream.CopyTo($targetfile)

$targetfile.close()

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


Note that the WebClient uses the FtpWebRequest internally, but does not expose its .UseBinary property.

Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992