function Get-FtpFolderFileList([string]$ftpSourceFolder)
{

    $ftpUser = "ftpuser"
    $ftpPassword = "ftppassword"

    [System.Net.FtpWebRequest]$ftp = [System.Net.WebRequest]::Create($ftpSourceFolder)
    $ftp.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
    $ftp.Credentials = New-Object System.Net.NetworkCredential($ftpUser, $ftpPassword)

    $response = $ftp.GetResponse()
    $stream = $response.GetResponseStream()

    $buffer = new-object System.Byte[] 1024
    $encoding = new-object System.Text.UTF8Encoding
    $outputBuffer = ""
    $foundMore = $false
    do
    {
        start-sleep -m 1000
        $foundmore = $false
        $stream.ReadTimeout = 1000
        do
        {
            try
            {
                $read = $stream.Read($buffer, 0, 1024)
                if ($read -gt 0)
                {
                    $foundmore = $true
                    $outputBuffer += ($encoding.GetString($buffer, 0, $read))
                }
            } catch { $foundMore = $false; $read = 0 }
        } while ($read -gt 0)
    } while ($foundmore)
    $fileList = $outputBuffer.Replace("`r`n", "`n").Replace("`r", "`n").Split("`n")
    return $fileList
}




Get-FtpFolderFileList("ftp://ftp.example.com/images")


#Другой вариант:

$site = "ftp://ftp.example.com/images"
$user = "ftpuser"
$pass = "ftppassword"

Write-Host "Get FTP site dir listing..." -nonewline

# Do directory listing
$FTPreq = [System.Net.FtpWebRequest]::Create($site)
$FTPreq.Timeout = 300000                             # msec (default is infinite)
$FTPreq.ReadWriteTimeout = 300000                    # msec (default is 300,000 - 5 mins)
$FTPreq.KeepAlive = $false                          # (default is enabled)
$FTPreq.Credentials = New-Object System.Net.NetworkCredential($user,$pass)
$FTPreq.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory

try {
    $FTPres = $FTPreq.GetResponse()
} catch {
   Write-Host "FAILED: $_"
   Exit
}

Write-Host $FTPres.StatusCode -nonewline
Write-Host $FTPres.StatusDescription

$list = Receive-Stream $FTPres.GetResponseStream()
#Receive-Stream $FTPres.GetResponseStream() | Out-File I:\Exchange\images.txt
$FTPres.Close()