Предыстория: 1с PostgreSQL на Centos’e, организована работа удаленных пользователей через нэтбуки (Windows 10).
Подключение: тонкий клиент, права минимальные. (что в 1с, что в ОС на пк).
Задача: автоматизировать обновление платформы на нэтбуках.
Чтобы обновить платформу на множестве устройств нам понадобится: Сетевой диск, учетная запись имеющаю доступ к необходимой директории на сетевом диске.
Решение: (загрузка и установка средствами 1с и Powershell)
В 1с создаём пользователя: "Установка платформы" с минимальными правами, для него в конфигураторе снимаем галку
"Защита от опасных действий", чтобы не пугать пользователей лишними сообщениями.
Добавляем обработку в необходимую подсистему, всё лишнее убираем.
Сценарий находится в макете (сохраняем с раширением ps1, адаптируем под себя)
Изменяем следующие данные:
$Object.MapNetworkDrive( $DISK, "\88.88.88.111server", "true", "Пользователь", "ПарольПользователя" )
88.88.88.111server" — адрес и имя сетевого диска с обновлениями
"Пользователь", "ПарольПользователя" — Имя пользователя и Пароль, под которым можно подключиться к диску
$TARGET=$objShell.NameSpace("B:1C64Klient")
1C64Klient — Путь к папке установочных файлов платформы на сетевом диске
$secpasswd = ConvertTo-SecureString "ПарольАдминистратораПК" -AsPlainText -Force
"ПарольАдминистратораПК" — Пароль Администраторской учетной записи на ПК (на всех нэтбуках единая учетная запись для администратора)
$mycreds = New-Object System.Management.Automation.PSCredential ("ИмяПользователяАдминистратора", $secpasswd)
"ИмяПользователяАдминистратора" — Имя администраторской учетной записи на ПК.
Сохраняем, загружаем обратно в макет.
Порядок работы обработки:
Пользователь запускает подключенную обработку, файл сценария Powershell сохраняется в каталог на Диск С, Приложение 1с закрывается, запускается сценарий Powershell:
1) Подключение к сетевому диску
2) Копирование файлов установки платформы
3) Отключение сетевого диска
4) Установка платформы от имени администратора (тихий режим установки, от пользователя потребуется 1 раз подтвердить вносимые изменения — (контроль учетных записей Windows ( в 8 проходило без него, в 10 не удалось обойти)).
5) Удаление папки установки и файла сценария
Тестировалось на Платформе 8.3.11.3034 (ERP 2.4.5.129)
Я правильно понимаю, что на каждый нетбук копируется файл скрипта PowerShell, где открытым текстом вбит пароль локального администратора компьютера (в Вашем случае всех рабочих станций)?
И возможно имеет смысл рассмотреть вариант простого скрипта без обработок, который запускается с компьютера администратора, примерно следующего содержания:
$session = New-PSSession -ComputerName ИмяКомпьютера -Credential ВашиУчетныеДанные
Invoke-Command -Command ВашаКомандаИлиСкриптБлок -Session $session
(1) Да так и есть, не самый лучший вариант в плане безопасности, но в моём случае удаленки к ним нет, как и постоянного интернет соединения, а обновлять 60 + машин, плюс заставлять людей приезжать с ними в офис не самое приятное решение.
(2) Можно по-подробнее?
В моём случае эти нетбуки не в корп сети, интернет соединение у них либо модем, либо wifi местной сети, в которой они находятся, из вне к ним не подключиться.
(4)
Тогда приведенный мной вариант не годится.
В этом случае, можно при конфигурировании устройства создавать scheduled task со скриптом, который скажем запускается при старте компьютера и периодически опрашивает некий сервер обновлений на предмет наличия соответствующих команд, и выполняет необходимые действия.
В этом случае пароль хоть и хранится на локальной машине, однако в зашифрованном виде и добраться до него сложно.
(4)
Что-то типа:
while($true)
{
Start-Sleep -Seconds ВашТаймаут
$result = Invoke-WebRequest -Uri УРЛВашегоСервераОбновлений
# Удобно передавать данные через json
$jsonObject = ConvertFrom-Json -InputObject $result
if (jsonObject.UpdateFlag -eq $true)
{
# Обновляем
}
}
(5) Тут мы просто в планировщике указываем какой скрипт выполнить по расписанию, и т какого пользователя ( от администратора).
Да, удобно и безопаснее, подходит для настройки новых машин, старые не переделать, пока в руки не принесут.
а есть решение не палить пароль админа?
(8) Оно В (5)
Планировщик
Но с начало руками надо забить задание в планировщик, подвязать скрипт, и его надо будет немного переписать в части запуска установки.
(8) Как вариант можно сохранять файл сценария в Temp файлы и оттуда запускать, там его не найти хотя бы рядовому пользователю, или же через планировщик указывать напрямую от кого и что запускать
(10)
Наверное — это не очень удачно т.к. работает до тех пор, пока кто-либо не озаботился этим вопросом.
Вообще, наверное самым перспективным, будет — развернуть AD + DirectAccess. В этом случае Вы сможете нормально управлять инфраструктурой и всяких танцев с бубном требоваться не будет.
(11) Linux
(12)У Вас вся инфраструктура на Linux, только клиенты Windows?
(13) Сервер Линуксовый, на нём же и 1с висит. Клиенты Windows начиная от xp заканчивая 10.
(14)Ну если начиная с XP :), тогда наверное скрипты.
Как я понимаю после первой установки, следующие платформы можно просто устанавливать простым копированием.
А просто скопировать можно любым пользователем из любого ресурса, лишь бы у пользователя была запись на папку, в которой хранятся установленные платформы. Если конечно КП пользуются windows.
(16) Примерно так, можно сохранять во временные файлы, они всегда доступны для записи
Есть же стандартные способы у платформы: настройте автообновление через файл 1CEStart.cfg (https://infostart.ru/public/648457/) , а в качестве папки с версиями платформ укажите папку из любого облака. Тот же Disk-O подключается как сетевая папка, что позволит вам на всех компьютерах унифицировать путь к каталогу с платформой
(18) Все бы ничего, но читаем комментарий (2) в теме что Вы прикрепили. Установить под пользователем не получится, нужны права администратора. И GPO тоже нет, потому имеем, что имеем.
(19)
(19)
Права администратора нужны, однако в приведенном комментарии Вы устанавливаете удаленно, т.е. логин и пароль администратора у Вас и учетные данные Вы вводите на своем админском компьютере, а не в скрипте на локальной машине.
(20) Это понятно, что логин и пароль администратора в этом случае не хранятся на локальной машине. Но здесь Мы рассматривали вариант, что у нас нет ни AD, ни GPO соответственно. Так как мне использую настройки CFG файла выполнить установку под пользователем без администраторских прав?
Если все это можно было бы задать в CFG на сервере, я был бы только рад.
(21)
Почему без админских прав то?
Если на клиентской стороне есть статический ip адрес, то Вы можете подключиться со своего компьютера при помощи powershell и выполнить все необходимые действия, какие Вам нужны. Для этого не нужна AD и не нужны GPO.
(21)В общем случае наличие статического ip не требуется, если ваши клиенты могут регистрироваться на dns сервере (который вы можете поднять и у себя), чтобы Вы знали, куда подключаться.
(22) Статических практически нет, но я все равно не пойму. Можете описать реализацию скачивания и установки, имея cfg при помощи powershell?
(19) надо попробовать в тот же планировщик запихнуть запуск 1С от админа: скорей всего запустит установку платформы также под админом