The File Transfer Protocol (FTP) is a authorized carrier aged to transfer recordsdata between purchasers and servers. It’s most continuously helpful to automate these file transfers, and PowerShell scripts can strategy in at hand to flee up this route of.
How To Use FTP in PowerShell
There are about a a range of solutions to invent FTP transfers in PowerShell.
The finest is to make exhaust of WebClient.UploadFile
. PowerShell is an object-oriented scripting language, and as well you may per chance well well simply have fat obtain admission to to .NET
normal libraries with New-Object
. With this, you may per chance well well accumulate a brand new WebClient
, bid the credentials for it, and upload a file.
$client = New-Object Arrangement.In finding.WebClient $client.Credentials = New-Object Arrangement.In finding.NetworkCredential("username", "password") $client.UploadFile("ftp://example.com/route/archive.zip", "C:archive.zip")
This can work dazzling, but obtained’t have the chance to handle TLS/SSL encrypted requests, or invent “packed with life” FTP transfers. The usage of FtpWebRequest
, coated below, will clear up this difficulty.
It isn’t finest observe to retailer your username and password in a script nevertheless, especially if that script is being committed to a shared Git repository. That you just may per chance as an different bid ambiance variables luxuriate in FtpUsername
and obtain admission to them in the script.
characteristic uploadToFTPServer($remote, $native) { $client = New-Object Arrangement.In finding.WebClient $client.Credentials = New-Object Arrangement.In finding.NetworkCredential($Env:FtpUsername, $Env:FtpPassword) $client.UploadFile($remote, $native) } uploadToFTPServer "ftp://example.com/route/archive.zip", "C:archive.zip"
Making this right into a characteristic will moreover imply you may per chance well well with out considerations invent extra than one transfers by calling the characteristic with a range of parameters.
Evolved FTP Transfers with PowerShell
In the event you would luxuriate in extra regulate, you may per chance well well simply tranquil exhaust FtpWebRequest
. This may per chance give a boost to TLS transfers, and moreover will imply you may per chance well well flip passive mode off. The easiest intention to make exhaust of it is far to launch a file movement and copy it to the FTP movement.
characteristic uploadToFTPServer($remote, $native) { $query = [System.Net.FtpWebRequest]::Execute($remote) $query.Credentials = New-Object Arrangement.In finding.NetworkCredential($Env:FtpUsername, $Env:FtpPassword) $query.Technique = [System.Net.WebRequestMethods+Ftp]::UploadFile $query.UsePassive = $gorgeous $fileStream = [System.IO.File]::OpenRead($native)