FtpHandling/Send-FtpFile.ps1

function Send-FtpFile {
    Param(
        [Parameter(Mandatory=$true)]
        [string] $ftpServer,
        [Parameter(Mandatory=$true)]
        [string] $ftpUser,
        [Parameter(Mandatory=$true)]
        [SecureString] $ftpPassword,
        [Parameter(Mandatory=$true)]
        [string] $sourcePath,
        [Parameter(Mandatory=$false)]
        [string] $sourcePathExclude = "",
        [Parameter(Mandatory=$true)]
        [string] $remotePath,
        [Parameter(Mandatory=$false)]
        [switch] $cleanFolder
        )
    
        if ($cleanFolder.IsPresent) {
            $ResponseStatus = Set-FTPConnection -Credentials (New-Object System.Management.Automation.PSCredential($ftpUser,$ftpPassword)) -Server $ftpServer -Session CleanupSession -UsePassive -EnableSsl -KeepAlive -UseBinary -ignoreCert
            if (($ResponseStatus | Select-Object -ExpandProperty WelcomeMessage) -like "230 User logged in.*") {
                $session = Get-FTPConnection -Session CleanupSession
    
                Remove-FTPItem -Session $session -Path $remotePath -Recurse
                New-FTPItem -Session $session -Name $remotePath
            }
            else {
                throw "Error connecting to FTP"
            }
        }
    
        $ResponseStatus = Set-FTPConnection -Credentials (New-Object System.Management.Automation.PSCredential($ftpUser, $ftpPassword)) -Server $ftpServer -Session UploadSession -UsePassive -EnableSsl -KeepAlive -UseBinary -ignoreCert
        if (($ResponseStatus | Select-Object -ExpandProperty WelcomeMessage) -like "230 User logged in.*") {
            $session = Get-FTPConnection -Session UploadSession
    
            if ($sourcePathExclude -eq "") {
                $files = (Get-ChildItem -Path $sourcePath)
            }
            else {
                $files = (Get-ChildItem -Path $sourcePath -Exclude $sourcePathExclude)
            }
            $files | ForEach-Object {
                Add-FTPItem -Session $session -Path $remotePath -LocalPath $_.FullName -Overwrite
            }
        }
    }