1С и PowerShell — обновление из хранилища

Пример скрипта, упрощающего работу.

И снова здравствуйте.

В очередной раз стала задача автоматизировать обычный, рутинный процесс и оказалось, что есть куча инструкций, а готового механизма нет, чтобы вот так взять, скачать, установить в планировщик и все заработало. Те, которые нашел на Инфостарте, стоят стартмани, а вот реально рабочий, бесплатный скрипт что-то я не смог найти.

В итоге я поступил так, как привык в таких случаях. Открыл PowerShell ISE, посмотрел примеры кода в интернетах, которые реализован на VBS, либо CMD, либо PS и накарябал своего кодового "франкинштейна", который работает так как надо*, и при этом не требует тратить временные ресурсы на повторную разработку. Этот кусок кода и выкладываю, чтобы каждый желающий мог посмотреть и если подходит взять. При необходимости не сложно будет адаптировать под свои нужды и запустить в работу, не тратя время на долгие поиски и изучение мануалов, чтобы автоматизировать простую по своей сути операцию.

И так. Что делают эти вот буквы, что под спойлером ниже:
0. Если в первую функцию передать флаг "выкинуть конфигуратор" — ЛОЖЬ, то скрипт не будет выкидывать пользователей и блокировать базу, если запущен конфигуратор. Если истина, то прибьет сеанс с конфигуратором тоже.
1. Подключается к консоли управления серверами 1С через com, находит по имени нужную базу данных, устанавливает на нее блокировку сеансов и блокировку регламентных заданий, пароль UС;
2. Завершает сеансы всех пользователей, если требуется;
3. Через конфигуратор получает все данные из хранилища, для обновления;
4. Обновляет конфигурацию из хранилища;
5. Выключает блокировку регламентных заданий и блокировку сеансов;
6. Обо всем этом пишет в лог (что-то пишет)))…

*-когда я пишу, что работает так как надо, то надо понимать, что это самое "надо" исходит из той задачи которую решал я. У вас может быть сходная задача но не по всем параметрам повторять мою, и это решение может на 100% не подойти, но поможет разобраться с вашей задачей, сэкономив время.

 

 Код на PowerShell (в приложенном файле тоже самое, поэтому просто скопируйте листинг себе, если нужен):

 
Код старался комментировать максимально подробно, чтобы все было понятно.

При создании, были пришиты части тел от статей: Параметры командной строки 1СУправление сервером приложений 1С с помощью PowerShell и куча информации по самому PowerShell из интернетов.

В файле ровно то же самое, что под спойлером!

UPD: Не выдержала душа поэта. Написал скрипт на AutoIT. В архиве приложенном ниже лежит скрипт для 32 и 64 битных систем и пример файла параметров. Все протестировал. В целом выполнение с PS скриптом схожее, сам PS скрипт тоже в архиве.

19 Comments

  1. ktb

    Т.е. десяток готовых решений на github не подошёл? Интересно чем?

    Reply
  2. ArchLord42

    (1) Ну что вы ругаетесь, автор ж написал не нашел на ИС 🙂

    Хотя как автор искал, непонятно, например вот целое how to, в которую вложения в виде СМ не нужны.

    https://infostart.ru/public/795197/

    Reply
  3. ArchLord42
    Те, которые нашел на Инфостарте, стоят стартмани, а вот реально рабочий, бесплатный скрипт что-то я не смог найти.

    А ваша то чем отличается от других? она так же стоит СМ и тд…

    Reply
  4. VPanin56

    » … готового механизма нет, чтобы вот так взять, скачать, установить в планировщик и все заработало.»

    «…. посмотрел примеры кода в интернетах … и накарябал своего кодового «франкинштейна»



    «При необходимости не сложно будет адаптировать под свои нужды и запустить в работу, не тратя время на долгие поиски и изучение мануалов»

    очередной НЕ ГОТОВЫЙ вариант?

    А почему только из хранилища обновление? А где обновление типовых баз ?

    При обновлении кучи баз через автоматизатор, как решен вопрос с запусков в режиме Предприятия, подтверждением легальности обновления и выполнением отложенных обработчиков?

    Reply
  5. Evil Beaver

    Что только не придумают, чтоб на картошку не ездить… (с) возьмите vrunner или deployka

    Reply
  6. Jokemas

    (3) Она не стоит ничего. Файл просто приложен, по сути листинг на странице и в файле идентичны. Просто скопируйте текст в файл, назовите его любым именем с расширением ps1 и все будет работать. Т.е. качать ничего не надо. Файл приложен, если кто-то вдруг ну очень захочет спасибо сказать таким образом.

    Reply
  7. Jokemas

    (4) Это готовый вариант под ту задачу, которую я описал. Прописал пароли, логины, пути в скрипте и он обновил из хранилища конфигурацию.

    Вы там что употребляли, что обновление типовых баз и обновление из хранилища в одну шеренгу поставили?

    Объясняю на пальцах. Вот у вас конфигурация, пусть даже типовая, которую вы решили дорабатывать с использованием хранилища конфигураций (ну чтобы много людей работало). Написали код, поместили в хранилище. Теперь, чтобы его увидели пользователи нужно обновить вашу конфигурацию на ту, что находится в хранилище с внесенными изменениями, вот для того, чтобы не делать это руками и предназначен скрипт.

    Соответственно отпадает вопрос о проверке легальности. Вы обновляетесь ИЗ ХРАНИЛИЩА конфигураций. Если вы не знаете что такое хранилище… то я даже не знаю что еще сказать )))). Короче ваш комментарий мимо кассы. Вы внимательно прочитайте, что там написано.

    Reply
  8. VPanin56

    (7)

    Вы там что употребляли,

    Да собственно то же что и все употребляют.

    ну если из хранилища обновлять тот же релиз, что и рабочая, то естественно никакой проверки легальности не будет. А если в хранилище обновить релиз? вы же не сидите вечно на одном релизе, если это только не самописка.

    У меня на поддержке 80 типовых Бух баз из них 10 с дописками и 80 Зупов. Есть самописная конфа по администрированию и обслуживанию этих баз. И в ней были написаны (до меня) модули по групповому обновлению всех баз, только все последовательные операции надо было запускать вручную, в том числе и запуск каждой базы для подтверждения легальности получения обновления. Меня это не сильно радовало. Перелопатил что нашел в инете по автоматизации и что имелось у нас. Сделал расширение для автоматического подтверждения легальности обновления. И вуаля, у меня теперь полностью в автоматическом режиме (даже обновления релизов скачиваются сами). И обновление 80 баз проходит за 5 часов и без моего участия.

    И не стал мудрить со скриптами, а написал на родном и понятном языке

    Reply
  9. Jokemas

    (8) Да, ваша задача совсем про другое уже. Масштаб не тот. У меня ситуация гораздо проще, поэтому и решение проще. Т.е. только обновление из хранилища одной базы, доступы к которой прописаны в скрипте.

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

    Reply
  10. tsukanov

    Спасибо! Продолжай. Нужно больше статей про повершел )

    Reply
  11. wowik

    +1. Отличная статья, отлично оформлена! тоже недавно с повершел знакомился) — https://infostart.ru/public/1114012/

    Reply
  12. CheBurator

    (8) Может для типовых баз использовать «Обновлятор»?

    Reply
  13. DonAlPatino

    (8)Вы бы выложили конфу на infostart’е 🙂

    Reply
  14. DonAlPatino

    Нубский вопрос на тему «а можно такой же,но с перламутровыми пуговицами» 🙂 В Powershell есть возможность несколько задач запустить параллельно? Чтобы 10 идентичных баз разом обновлять, а не по одной?

    Reply
  15. Jokemas

    (14)По идее можно, PowerShell поддерживает асинхронный вызов с помощью заданий (job). Если проще, то командлет Start-Job стартует код в фоне.Копайте в эту строну.

    З.Ы. Т.е. на каждую базу создать свой скрипт на основе того, что здесь. После этого написать еще один скрипт, который будет запускать нужные скрипты в задачи параллельно. Как-то так.

    Reply
  16. VPanin56

    (12) «Обновлятор» умеет подтверждать легальность получения обновления на серверных базах ?

    Reply
  17. VPanin56

    (13) Я не являюсь Автором этой конфигурации.

    Это групповое творчество по автоматизации обслуживания для отдела 1С.

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

    Reply
  18. asved.ru

    Все же PS — нечитаемый язык. Что-то в нем есть от Perl.

    Reply
  19. Jokemas

    (18) да, согласен. Но мне он показался похожим на ActionScript, что используется при программировании на Flash. Помнится давно я писал на AS, даже игра платформер есть =)). В целом для своих задач замечательный инструмент, но всему нужна мера. Если задача охватывает сложные процессы, либо объемную цепочку операций, то скриптами такие вещи решать не всегда корректно, иногда правильнее разработать полноценный инструмент. Просто есть люди, которые все на скриптах делают даже там, где это просто глупо. В моей статье про ректальное администрирование как раз этот нюанс описан. Статья, кстати, с реального админа списана, но личность его раскрывать не буду — не этично =)).

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *