PowerShell FTP Client Module
The PSFTP module allow you to connect and manage the contents of ftp account.
Module contain set of function to get list of items, download and send files on ftp location.

Module can be installed manualy by downloading Zip file and extract in two places:

%USERPROFILE%\Documents\WindowsPowerShell\Modules
%WINDIR%\System32\WindowsPowerShell\v1.0\Modules

Change Log:

v1.6.1 - Fixed couple bugs with sessions, allow to use pipeline with Remove-FTPItem
v1.6  - Add Get-FTPConnection to check current session, add Filter and Depth param to Get-FTPChildItem, allow to use pipeline with Add-FTPItem, little code refresh.

v1.5.1
- Get-FTPChildItem - Trim function added to Name and Parent attributes
v1.5 - Get-FTPItem - add switch Overwrite to automate overwrite lokal items
v1.4 - bBsic IIS6 compatibility mode
v1.3 - View the contents of directories recursively

v1.2.6 - Support for username with '@'

Available function list:

Get-FTPChildItem
Get-FTPItem (alias Receive-FTPItem)
Get-FTPItemSize
New-FTPItem
Remove-FTPItem
Rename-FTPItem
Add-FTPItem (alias Send-FTPItem)
Set-FTPConnection
Get-FTPConnection

Example of use (full content of module in attachment):

PowerShell
Edit|Remove
Import-Module PSFTP 
Set-FTPConnection -Credentials mgajda -Server ftp://ftp.server.org -Session MyTestSession -UsePassive 
$Session = Get-FTPConnection -Session MyTestSession 
 
New-FTPItem -Session $Session -Name TestRootDir 
New-FTPItem -Session $Session -Name TestDir1 -Path /TestRootDir 
New-FTPItem -Session $Session -Name TestDir2 -Path /TestRootDir 
New-FTPItem -Session $Session -Name TestDir11 -Path /TestRootDir/TestDir1 
 
Get-FTPChildItem -Session $Session -Path /TestRootDir -Recurse -Depth 2 
 
"Test File" | Out-File TestFile.txt 
Get-ChildItem TestFile.txt | Add-FTPItem -Session $Session -Path /TestRootDir 
Get-ChildItem TestFile.txt | Add-FTPItem -Session $Session -Path /TestRootDir -Overwrite 
Get-ChildItem TestFile.txt | Add-FTPItem -Session $Session -Path /TestRootDir/TestDir1  
Get-ChildItem TestFile.txt | Add-FTPItem -Session $Session -Path /TestRootDir/TestDir2 -BufferSize 5 
Add-FTPItem -Session $Session -Path /TestRootDir/TestDir1/TestDir11 -LocalPath TestFile.txt 
 
Get-FTPChildItem -Session $Session -Path /TestRootDir -Recurse -Depth 2 
Get-FTPChildItem -Session $Session -Path /TestRootDir -Recurse 
 
Get-FTPItemSize -Session $Session -Path /TestRootDir/TestDir1/TestFile.txt 
 
Rename-FTPItem -Session $Session -Path /TestRootDir/TestDir1/TestFile.txt -NewName TestFile2.txt 
Rename-FTPItem -Session $Session -Path /TestRootDir/TestDir1/TestFile2.txt -NewName ../TestFile2.txt 
 
Get-FTPChildItem -Session $Session -Path /TestRootDir | Get-FTPItem -Session $Session -LocalPath C:\test 
Get-FTPChildItem -Session $Session -Path /TestRootDir -Recurse | Get-FTPItem -Session $Session -LocalPath C:\test -RecreateFolders 
 
Get-FTPChildItem -Session $Session -Path /TestRootDir -Filter TestF* | Remove-FTPItem -Session $Session 
Remove-FTPItem -Session $Session -Path /TestRootDir -Recurse