Upload files with FTP using PowerShell Upload files with FTP using PowerShell powershell powershell

Upload files with FTP using PowerShell


I am not sure you can 100% bullet proof the script from not hanging or crashing, as there are things outside your control (what if the server loses power mid-upload?) - but this should provide a solid foundation for getting you started:

# create the FtpWebRequest and configure it$ftp = [System.Net.FtpWebRequest]::Create("ftp://localhost/me.png")$ftp = [System.Net.FtpWebRequest]$ftp$ftp.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile$ftp.Credentials = new-object System.Net.NetworkCredential("anonymous","anonymous@localhost")$ftp.UseBinary = $true$ftp.UsePassive = $true# read in the file to upload as a byte array$content = [System.IO.File]::ReadAllBytes("C:\me.png")$ftp.ContentLength = $content.Length# get the request stream, and write the bytes into it$rs = $ftp.GetRequestStream()$rs.Write($content, 0, $content.Length)# be sure to clean up after ourselves$rs.Close()$rs.Dispose()


There are some other ways too. I have used the following script:

$File = "D:\Dev\somefilename.zip";$ftp = "ftp://username:password@example.com/pub/incoming/somefilename.zip";Write-Host -Object "ftp url: $ftp";$webclient = New-Object -TypeName System.Net.WebClient;$uri = New-Object -TypeName System.Uri -ArgumentList $ftp;Write-Host -Object "Uploading $File...";$webclient.UploadFile($uri, $File);

And you could run a script against the windows FTP command line utility using the following command

ftp -s:script.txt 

(Check out this article)

The following question on SO also answers this: How to script FTP upload and download?


I'm not gonna claim that this is more elegant than the highest-voted solution...but this is cool (well, at least in my mind LOL) in its own way:

$server = "ftp.lolcats.com"$filelist = "file1.txt file2.txt"   "open $serveruser $user $passwordbinary  cd $dir     " +($filelist.split(' ') | %{ "put ""$_""`n" }) | ftp -i -in

As you can see, it uses that dinky built-in windows FTP client. Much shorter and straightforward, too. Yes, I've actually used this and it works!