Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Скачать с FTP свежий файл

Ответить
Настройки темы
PowerShell - [решено] Скачать с FTP свежий файл

Аватара для AZABAZA

Пользователь


Сообщения: 69
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Всем доброго времени суток!

Возникла нужда, скачать файлы с FTP. Прошу всех кто связывался с этим помочь. Спасибо заранее!

Задача:
1. подключится к FTP
2. Скачать свежий *.ZIP файл с FTP на локальный компьютер.
3. Распаковать *.ZIP в файл.
4. Поменять расширение (Пример.exe на .bat)
5. удалить *.ZIP файл с локального компьютера
6. Закрыть с сообщением файл успешно скопирован!

Еще раз спасибо заранее!

Отправлено: 05:55, 17-04-2015

 

Аватара для AZABAZA

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Нашел тут скрипт только он на CMD\BAT script CMD

Отправлено: 09:02, 17-04-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Качаем модуль FTP - https://gallery.technet.microsoft.co...lient-db6fe0cb

Код: Выделить весь код
# Импортируем модуль
Import-module C:\PSFTP

# Папка для файлов
$folder = "C:\test"

# Подключение к фтп
$pass = ConvertTo-SecureString 'ftp' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("ftp",$pass)
Set-FTPConnection -Credentials $cred -Server ftp://ftp.contoso.ru -Session Session -UsePassive

# Скачиваем файл
Get-FTPChildItem zipfiles/*.zip -Session $Session | Where {$_.Name} | Sort ModifiedDate | Select -Last 1 | Foreach {
	$filename = "$folder\$($_.Name)"
	$r = Get-FTPItem -Path $_.FullName -Session $Session -LocalPath $filename -Overwrite
	
	if(Test-Path $filename) {
		$shell = New-Object -ComObject Shell.Application
		$zip = $shell.NameSpace($filename).items()
		try {
			$shell.Namespace($folder).CopyHere($zip)
			Get-Item "$folder\$($zip.Item(0).Name)" | Rename-Item -NewName {$_.basename + ".bat"}
			Remote-Item $filename -Force
			Write-Host "Файл успешно скопирован!" -ForeGround Yellow
		}
		
		catch {
			Write-Host "Файл скопировать не удалось!" -ForeGround Red
		}
	}
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:03, 17-04-2015 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Kazun, не могу понять цель использования фильтра «Where {$_.Name}». Можете пояснить?

Отправлено: 11:13, 17-04-2015 | #4


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Есть часть данных, которые не должны попадать в вывод( по крайне мере когда я тестировал).

Код: Выделить весь код
PS > Get-FTPChildItem ubuntu-releases/15.04/*.torrent -Session $Session | Sort ModifiedDate


   Parent: ftp://mirror.yandex.ru/ubuntu-releases/15.04

Dir Right     Ln  User   Group  Size   ModifiedDate        Name
--- -----     --  ----   -----  ----   ------------        ----
-   rw-rw-r-- 1   ftp    ftp    43KB   26.03.2015 22:24:00 ubuntu-15.04-beta2-desktop-amd64.iso.torrent
-   rw-rw-r-- 1   ftp    ftp    45KB   26.03.2015 22:24:00 ubuntu-15.04-beta2-desktop-i386.iso.torrent
-   rw-rw-r-- 1   ftp    ftp    24KB   26.03.2015 22:28:00 ubuntu-15.04-beta2-server-amd64.iso.torrent
-   rw-rw-r-- 1   ftp    ftp    24KB   26.03.2015 22:28:00 ubuntu-15.04-beta2-server-i386.iso.torrent
ftp://mirror.yandex.ru/ubuntu-releases/15.04/ubuntu-15.04-beta2-desktop-amd64.iso.torrent


PS > Get-FTPChildItem ubuntu-releases/15.04/*.torrent -Session $Session | Sort ModifiedDate | Select -L
ast 1
ftp://mirror.yandex.ru/ubuntu-releases/15.04/ubuntu-15.04-beta2-desktop-amd64.iso.torrent

PS > Get-FTPChildItem ubuntu-releases/15.04/*.torrent -Session $Session | Where {$_.Name} | Sort Modifi
edDate | Select -Last 1


   Parent: ftp://mirror.yandex.ru/ubuntu-releases/15.04

Dir Right     Ln  User   Group  Size   ModifiedDate        Name
--- -----     --  ----   -----  ----   ------------        ----
-   rw-rw-r-- 1   ftp    ftp    24KB   26.03.2015 22:28:00 ubuntu-15.04-beta2-server-amd64.iso.torrent

Отправлено: 11:17, 17-04-2015 | #5


Аватара для AZABAZA

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Kazun,
Спасибо, вот только не совсем понятно куда юзера/пароль вбивать ?

Код: Выделить весь код
"The remote server returned an error: (530) Not logged in."

Отправлено: 11:23, 17-04-2015 | #6


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


$pass = ConvertTo-SecureString 'PASSOWRD' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("USERNAME",$pass)
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:24, 17-04-2015 | #7


Аватара для AZABAZA

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Странно что он скопировал а сообщение выдало что
Код: Выделить весь код
Файл скопировать не удалось!

Отправлено: 11:31, 17-04-2015 | #8


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Вывод:
$shell.NameSpace($filename).items()

$filename - заменить на путь к скаченному архиву.

Отправлено: 11:38, 17-04-2015 | #9


Аватара для AZABAZA

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Kazun,

я не менял что выше написали, а

Код: Выделить весь код
Remote-Item $filename -Force
поменял на
Код: Выделить весь код
Remove-Item $filename -Force
Вывод: Файл успешно скопирован!
Это нормально?

Отправлено: 11:44, 17-04-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Скачать с FTP свежий файл

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
.NET - Скачать файлы с ftp по маске. Sadhacker Программирование и базы данных 1 20-07-2012 21:23
Прочее - [решено] Как скачать ftp архив с linux? dima1981 Общий по Linux 12 18-04-2009 15:24
[решено] Как скачать с ftp сервера medvedkovo Хочу все знать 8 01-10-2008 19:12
не получается скачать с ftp-серверов Turman Хочу все знать 19 05-04-2005 16:24
Не могу скачать файл с ftp. Что делать? AlexanderS2004 Хочу все знать 3 23-08-2004 15:17




 
Переход