-
-
Save TheUltimateC0der/dd59fa051c3f797c5a79a38df2e1bdc1 to your computer and use it in GitHub Desktop.
PowerShell – FTP Upload Directory With Sub-Directories
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
clear | |
# FTP Server Variables | |
$FTPHost = 'ftp://192.168.1.1/html/' | |
$FTPUser = 'user' | |
$FTPPass = 'password' | |
#Directory where to find pictures to upload | |
$UploadFolder = "C:\Temp\" | |
$webclient = New-Object System.Net.WebClient | |
$webclient.Credentials = New-Object System.Net.NetworkCredential($FTPUser,$FTPPass) | |
$SrcEntries = Get-ChildItem $UploadFolder -Recurse | |
$Srcfolders = $SrcEntries | Where-Object{$_.PSIsContainer} | |
$SrcFiles = $SrcEntries | Where-Object{!$_.PSIsContainer} | |
# Create FTP Directory/SubDirectory If Needed - Start | |
foreach($folder in $Srcfolders) | |
{ | |
$SrcFolderPath = $UploadFolder -replace "\\","\\" -replace "\:","\:" | |
$DesFolder = $folder.Fullname -replace $SrcFolderPath,$FTPHost | |
$DesFolder = $DesFolder -replace "\\", "/" | |
# Write-Output $DesFolder | |
try | |
{ | |
$makeDirectory = [System.Net.WebRequest]::Create($DesFolder); | |
$makeDirectory.Credentials = New-Object System.Net.NetworkCredential($FTPUser,$FTPPass); | |
$makeDirectory.Method = [System.Net.WebRequestMethods+FTP]::MakeDirectory; | |
$makeDirectory.GetResponse(); | |
#folder created successfully | |
} | |
catch [Net.WebException] | |
{ | |
try { | |
#if there was an error returned, check if folder already existed on server | |
$checkDirectory = [System.Net.WebRequest]::Create($DesFolder); | |
$checkDirectory.Credentials = New-Object System.Net.NetworkCredential($FTPUser,$FTPPass); | |
$checkDirectory.Method = [System.Net.WebRequestMethods+FTP]::PrintWorkingDirectory; | |
$response = $checkDirectory.GetResponse(); | |
#folder already exists! | |
} | |
catch [Net.WebException] { | |
#if the folder didn't exist | |
} | |
} | |
} | |
# Create FTP Directory/SubDirectory If Needed - Stop | |
# Upload Files - Start | |
foreach($entry in $SrcFiles) | |
{ | |
$SrcFullname = $entry.fullname | |
$SrcName = $entry.Name | |
$SrcFilePath = $UploadFolder -replace "\\","\\" -replace "\:","\:" | |
$DesFile = $SrcFullname -replace $SrcFilePath,$FTPHost | |
$DesFile = $DesFile -replace "\\", "/" | |
# Write-Output $DesFile | |
$uri = New-Object System.Uri($DesFile) | |
$webclient.UploadFile($uri, $SrcFullname) | |
} | |
# Upload Files - Stop |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment