У меня есть сценарий PowerShell, который загружает все файлы из каталога FTP в локальную папку (спасибо Мартину Прикрилу).
Каталог FTP обновляется несколькими новыми файлами в разное время в течение дня.
Я буду запускать свой скрипт каждые 30 минут через планировщик задач для загрузки файлов из каталога FTP.
Я хочу, чтобы скрипт проверял и загружал только новые файлы из каталога FTP в локальную папку.
Примечание. Проверка должна выполняться в каталоге FTP, поскольку ранее загруженные файлы могут быть удалены.из локальной папки.
См. ниже мой текущий скрипт;
#FTP Server Information - SET VARIABLES
$user = 'user'
$pass = 'password'
$target = "C:\Users\Jaz\Desktop\FTPMultiDownload"
#SET FOLDER PATH
$folderPath = "ftp://ftp3.example.com/Jaz/Backup/"
#SET CREDENTIALS
$credentials = new-object System.Net.NetworkCredential($user, $pass)
function Get-FtpDir ($url,$credentials) {
$request = [Net.WebRequest]::Create($url)
$request.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
if ($credentials) { $request.Credentials = $credentials }
$response = $request.GetResponse()
$reader = New-Object IO.StreamReader $response.GetResponseStream()
$reader.ReadToEnd()
$reader.Close()
$response.Close()
}
$Allfiles=Get-FTPDir -url $folderPath -credentials $credentials
$files = ($Allfiles -split "`n")
$files
$webclient = New-Object System.Net.WebClient
$webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass)
$counter = 0
foreach ($file in ($files | where {$_ -like "*.*"})){
$source=$folderPath + $file
$destination = Join-Path $target $file
$webclient.DownloadFile($source, $destination)
#PRINT FILE NAME AND COUNTER
$counter++
$counter
$source
}
Заранее спасибо за помощь!