Возьмём некоего сферического системного администратора в вакууме. Представим, что под его присмотром находится множество компьютеров, которые:
- находятся в разных концах света;
- у них нет доменной структуры;
- на них установлены разномастные операционные системы (от Windows Home до профессиональной «десятки»).
А теперь представим, что системному администратору нужно на всех этих компьютерах:
- установить какую-то программу ;
- обновить какую-то программу;
- сделать массовую настройку…
Понятно, что для обслуживания такого парка компьютеров необходимо иметь какую-то систему централизованного управления, которая бы позволяла управлять всеми устройствами при помощи скриптов написанных на VBScript, JavaScript, BAT…
У меня такая система есть. 🙂
Сразу сделаю небольшое отступление. Большинство систем управления устанавливаются на компьютер и работают «в режиме службы» и от имени… Правильно, — пользователя SYSTEM. Это ВАЖНО!
Далее… Как устанавливаемая программа попадёт на компьютер клиента? Правильно! Из интернета! Для этого организовываем у себя небольшое хранилище с дистрибутивами, доступное по по FTP или HTTP/HTTPS. Как из этого хранилища скачать программу? Правильно, — скриптом.
А вот теперь расскажу, как не нужно скачивать файлы из интернета скриптами.
Вариант первый.
В интернете часто рекомендуют скачивать файлы при помощи bitsadmin. Например -=ТУТ=- можно почитать как именно это сделать.
Приведу короткий пример
bitsadmin /addfile myDownloadJob https://downloadsrv/10mb.zip c:\10mb.zip
Пример хороший! Правильный! Запустив эту команду в консоли, вы скачаете файл куда нужно.
Ура? НЕТ!
Если вы запустите bat-скрипт с данной командой на компьютере при помощи вашей системы управления, то ничего не получится. Скрипт не выполнится по соображениям безопасности. А сам bitsadmin ругнётся, что-то про то, что он запускается от имени пользователя не вошедшего в систему… Но вы этого можете и не узнать, а будете просто ломать голову в попытках заставить команду работать.
Вариант второй.
Скачивать программы из интернета при помощи BAT-скриптов, например, так…
Ниже идёт практически реальный текст bat-файла. Есть только одно «но». Файл один, но состоит как бы из двух частей. Часть первая — это обычный батник, который запускается и осуществляет основную логику действий. Часть вторая, — это небольшой javascript, который, собственно, и производит скачивание программы.
@set @x=0 /*
@echo offecho Downloading Skype…
cscript /nologo /e:jscript «%~f0» «http://sitename/Skype.exe» «C:/Windows/Temp/Skype.exe»
echo Done!
echo Result — %errorlevel%rem Устанавливаем Skype
start /wait C:\Windows\Temp\Skype.exe /silent
ping -n 20 127.0.0.1 >> nulEXIT /B
*/var http = new ActiveXObject(«MSXML2.XMLHTTP»)
http.open(«GET», WScript.Arguments(0), false)
http.send()var ado = new ActiveXObject(«ADODB.Stream»)
ado.mode = 3
ado.type = 1
ado.open()
ado.Write(http.responseBody)
ado.SaveToFile(WScript.Arguments(1), 2)
Такие скрипты очень мне нравятся, т.к. используют, по-моему, нетривиальную логику выполнения скрипта. Но об этом нужно писать отдельно…
Ура? НЕТ!
Такого рода скрипты очень часто «рубятся» антивирусными программами.
Вариант 3.
Писать VBS-скрипты, которые скачивают файлы из интернета.
Примеры легко можно найти -=ТУТ=-
Сразу скажу, что у меня не получилось написать скрипт, который бы не «рубился» антивирусами. 🙂
То «Касперскому» что-то не нравится, то Avast ругается, то Comodo что-то подозревает…
Вместо итога.
Испробовав несколько вариантов (их было более 10), я всё-таки нашёл способ решить свою задачу по загрузке файлов на удалённый компьютер стандартными средствами Windows без дополнительных программ и PowerShell…
Сейчас для меня уже не составляет труда на несколько десятков компьютеров поставить какую-то программу: хоть Skype, хоть 1С Предприятие…
Как ?
А это уже отдельная история, которую, может быть, расскажу потом.
🙂