Работа со скриптом
Для работы скрипта должен быть установлен PowerShell. Данная программа идёт в комплекте со всеми современными windows системами, а вот в WindowsXP придётся установить PowerShell отдельно.
Все параметры работы скрипта можно задать, отредактировав файл, а можно передать как значения соответствующих ключей. Давайте рассмотрим, какие имеются ключи и какие значения им необходимо передавать.
Ключ "dd" (от Distribution Directory), принимает любой путь windows формата, т.е. пути вида «C:\Windows» или «\\Server\1CDistr». По указанному пути должны располагаться дистрибутивы платформы 1С, причём каждый из дистрибутивов должен быть в своей папке с номером версии или с номером версии и битность платформы 1С Предприятия, например «8.3.5.1111» или «8.3.9.1818-32» или «8.3.9.1818-64». Суфиксы битности необходимо использовать, если в одной сети существуют компьютеры с операционными системами разной битности и вы хотите поставить на 64-битную систему 64-битную платформу. Указанная папка, и все подпапки с дистрибутивами платформ, должна быть доступна для чтения пользователю, от имени которого будет работать скрипт.
Ключ "dl" (от Directory Logs), аналогично ключу "dd", принимает любой путь windows формата. В данную папку будут записываться логи выполнения скрипта. Имена файлов с логами соответствуют имени компьютера и дописываются при каждом запуске скрипта. Указанная папка должна быть доступна для записи пользователю, от имени которого будет работать скрипт. Если указанный путь недоступен или нет возможности записи, то все действия скрипта будут писаться в файл «1C8InstallAndUninstall.log», находящийся в локальной папку пользователя (примерный путь «C:\Users\Vasa\AppData\Local\»).
Ключ "ip" (от Install Parameters) отвечает за параметры установки при работе скрипта. Ключ может принимать одно из следующих значений:
- “no” — не производить установку
- “last” — установить последнею платформу из найденных в папке с дистрибутивами
- “8.3.5.1111” — номер версии конкретной платформы, которую необходимо установит
Ключ "dp" (от Delet Parameters) отвечает за параметры удаления при работе скрипта. Ключ может принимать одно из следующих значений:
- “no” — не производить удаление
- “ael” (от all except last) — удалить все найденные на компьютере платформы, которые совпадают со всеми платформами, найденными в папке с дистрибутивами, кроме последней платформы. Важно! Данный ключ удалит только те платформы, версии которых имеются в папке с дистрибутивами платформ, если какая-то версия установлена на компьютер, но её нет в папке с дистрибутивами, то она не будет удалена.
- “8.3.5.1111” — номер версии конкретной платформы, которую необходимо удалить
- “all” — удалить все версии платформы 1С на компьютере. Данное значение является подавляющим и экстенсивным. Подавляющим, потому что, для работы скрипта при данном значении необходимо передать путь для записи логов, а можно не передавать даже его, все значения остальных ключей будут игнорироваться. Экстенсивными, потому что, удалены будут все продукты на компьютере хотя бы призрачно напоминающие платформу 1С.
Ключ "iod" (от Installation Options Distribution) отвечает за компоненты платформы 1С, которые будут установлены. Ключу необходимо передать значение вида «DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1», в котором можно менять 1 на 0 или обратно в зависимости какие части платформы вы хотите установить. Если данному ключу передать любое другое значение, не похожее на строку выше, то будет произведена установка всех компонент для работы системы в клиентском режиме.
- “DESIGNERALLCLIENTS” — основной клиент и конфигуратор
- “THINCLIENT” — тонкий клиент для клиент-серверного варианта работы
- “THINCLIENTFILE” — тонкий клиент с возможностью работы с файловыми информационными базами
Как установить, обновить или удалить Платформу 1С, если у вас много компьютеров, бегать к каждому лень, а домена нет?
Плохая новость: придётся побегать, и настроить на каждом компьютере выполнение планировщика заданий
Хорошая новость: это надо сделать только один раз.
Для начала осуществим подготовку:
- Создаём 2 общедоступных папки, одну с правами на чтение для всех, а другую с правами на запись для всех. Обязательно создавайте 2 независимые папке, иначе всё может очень плохо закончиться.
- В папку с правами «только на чтение для всех» кладём папки с дистрибутивами, каждая из папок должна именоваться по номеру версии дистрибутива, который в ней находиться. Сюда же кладём скрипт и bat файл, который запускает скрипт.
Небольшое отступление! Зачем нам нужен bat файл для запуска PowerShell скрипта? Потому что используя bat файл мы убиваем двух зайцев:
- По умолчанию система windows запрещает запуск любого PowerShell скрипта из соображения безопасности, поэтому bat файл будет сначала разрешать запуск скрипта, а после его работы снова запрещать.
- В bat файле можно менять параметры запуска скрипта, не редактируя сам файл скрипта меняя установленные в него значения по умолчанию.
Теперь начнём настраивать локальные компьютеры пользователей. В отсутствии домена предполагается, что все пользователи работают под локальными учётными записями с правами «Пользователи», а для административных действия имеется учётная записи с правами «Администраторы».
- Входим в систему на локальном компьютере под именем пользователя с правами «Администраторы»
- Жмём Win+R и вводим Taskschd.msc, открывается планировщик заданий
- Создаём задание по ссылке справа (обратите внимание на ссылки «Подключиться к другому компьютеру» и «Импортировать задачу» для самых больших ленивцев).
- Даём осмысленное название заданию. Необходимо обязательно установить: «Выполнять для всех пользователей» и «Выполнять с наивысшими правами»
- Переходим на вкладку «Триггеры» и нажимаем «Создать». Тут настраиваются параметры, при каких условиях будет запускаться скрипт. Можно настроить, чтобы скрипт запускался каждый час в рабочее время (если скрипту нечего делать, т.е. уже всё установлено и удалено, то его работа ни как не скажется на производительности). Другой популярный вариант запуска при включении компьютера, обращаю ваше внимание что имеются в понятие «При входе в систему» и «При запуске», в первом случае скрипт может не отработать, т.к. пользователь от имени которого запускается скрипт отличен от пользователя работающего на данном компьютере, проще говоря выбирайте вариант «При запуске»
- Переходим на вкладку «Действия» и нажимает «Создать». Нажимаем «Обзор» и выбираем bat файл. Дальнейшие вкладки можно оставить по умолчанию.
Как установить, обновить или удалить Платформу 1С, если имеется домен?
Всё проще некуда
-
- Создаём группу, в которую включаем все интересующие нас компьютеры. Очень важно чтобы в группу входили именно компьютеры, а не пользователи которые за ними сидят, т.к. для работы скрипту необходимы повышение права, которых нет у пользователя.
- Создаём 2 папки, к одной даём доступ на чтение ранее созданной группе, а второй на запись. В первую кладём дистрибутивы 1С (смотри выше), а во вторую будут писаться логи работы скрипта.
- Открываем оснастку «Управление групповой политикой»
- Создаём или изменяем существующую политику, направленную на ранее созданную группу компьютеров.
- Идём «Конфигурация компьютера» - «Политики» - «Конфигурация Windows» - «Сценарии (запуск/завершение)» – «Автозагрузка».
- Добавляем новый сценарий. Обратите внимание, что путь до сценария должен быть сетевым, а не локальным. Можно добавить сценарий как bat файл, так и напрямую PowerShell. Всё зависит от вашего парка компьютеров и желания.
- Всё.
Примечание
- Работоспособность скрипта проверена в следующих системах: Windows 7 (x86, x64), Windows 8.1 (x86, x64), Windows 10 (x86, x64) со всеми обязательными и не обязательными обновлениями на 2016-11-10.
- Если вас не устраивает задержка при срабатывание скрипта в домене, то необходимо установить параметр «Configure Logon Script Delay» в «0». Параметр можно найти: Computer Configuration > Administrative Templates > System > Group Policy > Configure Logon Script Delay (Конфигурация компьютера > Политики > Административные шаблоны > Система > Групповая политика > Настроить задержку сценария входа). Большое спасибо blackhole321 за данную информацию.
upd:2015-12-07
- Полностью переписан способ обхода каталогов с платформой. К данной части кода было больше всего нареканий, не у всех данная часть отрабатывала, а у некоторых отрабатывала неправильно. Теперь всё работает корректно, т.к. используются только самые простые конструкции для обхода директории с дистрибутивами.
- Полностью переписана часть поиска последнего (старшего) дистрибутива в папки с дистрибутивами. Теперь это нормальный понятный код, а не ужас, который был ранее.
- Поменялись между собой части кода, теперь скрипт пытается в первую очередь поставить платформу, а потом всё остальное.
- Дописано много различных проверок чтобы избежать странного поведения или лишних попыток установить платформу. В лог файле теперь больше информации о работе скрипта.
upd:2016-11-21
- Изменена логика работы скрипта. Теперь проверяется установка платформы и в случае отсутствия устанавливаемой платформы на клиентском компьютере скрипт прекращает работу.
- Добавлена функциональность позволяющая в сети с компьютерами разной битности устанавливать 64-битную платформу на 64-битные системы. Для работы данного функционала папки с платформами должны быть вида "Х.Х.Х.Х-32" и "Х.Х.Х.Х-64".
upd:2019-12-12
- В связи с выходом платформы 8.3.16.*, в которой добавился msi файл для Windows XP, изменён поиск файла msi. Это не говорит о том что в Windows XP данный скрипт будет работать, скорее наоборот, теперь он точно не будет работать в этой операционной системе.
- Теперь перед установкой платформы устанавливается Microsoft Visual C++ Redistributable, если соответствующий файл имеется в папке с устанавливаемой платформой.
upd:2020-01-23
- Исправлены некоторые ошибки.