Powershell. Получение списка файлов на FTP сервере
21 Oct 2017
local_offer
powershell
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()