Установка и удаление платформы 1С на клиентских компьютерах удалённо через скрипт (с доменом и без)

0. Dim Dragonim (Dragonim) 85 01.09.14 07:57 Сейчас в теме
Существует множество способов установки и обновления платформы 1С на клиентских компьютерах. Данная статья описывает один из самых гибких методов с использованием скрипта.

Перейти к публикации

Комментарии
1. Евгений Беспалов (EugeneBespalov) 22.10.14 09:35 Сейчас в теме
Я понимаю что можно и bat, но всё же логичнее было бы говорить и использовать cmd, всё равно ваш скрипт в DOS не будет работать.
2. Юлия Лобода (LobodaYu) 27.10.14 10:25 Сейчас в теме
при выполнении скрипта выдает ошибку:
Неверная числовая константа: 1.
строка:1 знак:2
+ 1 <<<< C8InstallAndUninstall.ps1
+ CategoryInfo : ParserError: (1:StecordException
+ FullyQualifiedErrorId : BadNumericConstant
3. Юлия Лобода (LobodaYu) 27.10.14 10:31 Сейчас в теме
Помогите разобраться
Прикрепленные файлы:
4. Юлия Лобода (LobodaYu) 27.10.14 11:11 Сейчас в теме
--------------------------------------------------------------------------------
POWERSHELL EXCEPTION
EXCEPTION TYPE:System.Management.Automation.ParameterBindingException
MESSAGE:Не удается найти параметр, соответствующий имени параметра "Directory".
POSITION:
строка:259 знак:64
+ $AllPlatforms = (Get-ChildItem -Path $DistribDir -Directory <<<< | Where-Object {$_.Name -match $RegExpPatternNameFolderDistrib}).Name
--------------------------------------------------------------------------------
5. Dim Dragonim (Dragonim) 85 27.10.14 11:44 Сейчас в теме
(4) Судя по всему у вас нет папок с дистрибутивами в директории где они должны быть.

Как я понимаю командлет Get-ChildItem согласно параметру -Directory пытается найти хоть какие-то папки по пути $DistribDir (это параметр -dd из описания скрипта), но там ничего нет или имеются только файлы. Вот на отсутствие папок в директории -dd скрипт и ругается.

Вторая ошибка должна уйти когда исправите первую.

Читайте внимательно описание параметров скрипта и что где должно находиться.
6. Юлия Лобода (LobodaYu) 27.10.14 12:56 Сейчас в теме
Все папки вроде на месте (прикладываю скан)
Прикрепленные файлы:
7. Юлия Лобода (LobodaYu) 27.10.14 12:59 Сейчас в теме
В скрипте заменил пути (\\server) на свои (\\srv2012) и сохранил с кодировкой 1251 ANSI
8. Юлия Лобода (LobodaYu) 27.10.14 13:04 Сейчас в теме
В скрипте заменил пути (\\server) на свои (\\srv2012) и сохранил с кодировкой 1251 ANSI
И в описаниях командлета Get-ChildItem не нашел параметра -Directory (Get-ChildItem [-Path <string[]>] [-Filter <string>] [-Exclude <string[]>] [-Force] [-Include <string[]>] [-Name] [-Recurse] [-UseTransaction] [<CommonParameters>]
Get-ChildItem -LiteralPath <string[]> [-Filter <string>] [-Exclude <string[]>] [-Force] [-Include <string[]>] [-Name] [-Recurse] [-UseTransaction] [<CommonParameters>])
9. Юлия Лобода (LobodaYu) 27.10.14 15:49 Сейчас в теме
в логе пишет
---------------------------------------------------------------------------------
2014.10.27 15:40:51 Начало работы скрипта
2014.10.27 15:40:53 Последняя (старшая) платформа уже установлена.
2014.10.27 15:40:53 Окончание работы скрипта
---------------------------------------------------------------------------------
2014.10.27 15:40:53 Последняя (старшая) платформа уже установлена.
2014.10.27 15:40:53 Окончание работы скрипта
---------------------------------------------------------------------------------
но 1С не установлена. Подскажите, что еще посмотреть для решения этой задачи?
посмотрел в отладчике PowerGUI 259 строчка не обрабатывается и $AllPlatforms не присваивается массива из имен папок.
но если запустить из powerShell то выдает:
Get-ChildItem -Path \\SRV2012\1CDistr


Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 27.10.2014 9:10 8.3.5.1231
-a--- 27.10.2014 14:07 531 1C8InstallAndUninstall.bat
-a--- 27.10.2014 16:18 19223 1C8InstallAndUninstall.ps1
11. Dim Dragonim (Dragonim) 85 28.10.14 09:25 Сейчас в теме
(9) Если скрипт отработал с непредвиденной ошибкой, то смотреть на логи не имеет смысла, вероятнее всего там тоже имеется ошибка

(10) с этой директивой -Directory вообще не понятно. Она имеется у меня в справке WPS ISE на одной системе и отсутствует в другой, хотя там и там установлен Win 8.1 Pro, по онлайн ссылке http://go.microsoft.com/fwlink/p/?linkid=290488 данная директива отсутствует.

Подытожим, я переписал данную строку.

Я уверен что это не последняя ошибка и недочёт скрипта, поэтому создал репозиторий GitHab.

https://github.com/Dragonim/1C8InstallAndUninstall.git
10. Юлия Лобода (LobodaYu) 27.10.14 19:30 Сейчас в теме
Командлет Get-ChildItem c параметром -Directory удалось найти в третьей версии PowerShell. (посмотреть версию - $PSVersionTable). Скорее всего на более низких версиях данный скрипт не работает и на XP он не запустится.
SYNTAX
Get-ChildItem [-Path <string[]>] [-Filter <string>] [-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-Force] [-Name] [-UseTransaction] [-Attributes <FlagsExpression[FileAttributes]>] [-Directory] [-File] [-Hidden] [-ReadOnly] [-System] [<CommonParameters>]
Get-ChildItem [-Filter <string>] -LiteralPath <string[]> [-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-Force] [-Name] [-UseTransaction] [-Attributes <FlagsExpression[FileAttributes]>] [-Directory] [-File] [-Hidden] [-ReadOnly] [-System] [<CommonParameters>]

При установке PowerShell 3.0 все тут-же запустилось и установилось! Автору огромное спасибо за его разработку!
12. Юлия Лобода (LobodaYu) 28.10.14 10:20 Сейчас в теме
С новой версией скрипта работает и на второй версии PowerShell.
Есть пожелание расширить данные ключа "iod" для установки компонентов:
DESIGNERALLCLIENTS – все клиенты и конфигуратор.
THINCLIENT – тонкий клиент для клиент-серверного варианта работы.
THINCLIENTFILE – тонкий клиент с возможностью работы с файловыми информационными базами.
SERVER – сервер «1С:Предприятия». Если программа установки запускается из программы запуска, то сервер будет установлен как приложение.
WEBSERVEREXT – компоненты расширения для веб-сервера.
CONFREPOSSERVER – сервер хранилища конфигураций «1С:Предприятия».
SERVERCLIENT – компоненты для администрирования кластера серверов «1С:Предприятия».
CONVERTER77 – конвертер информационных баз из версии «1С:Предприятия 7.7».
LANGUAGES – список языков интерфейса для установки

Как бы также красиво раздать пользователям список баз данных в домене?
13. Dim Dragonim (Dragonim) 85 28.10.14 11:02 Сейчас в теме
(12) с технической стороны нет ни какой проблемы в расширении, но вот с логической это не имеет ни какого смысла. Зачем на локальных компьютерах ставить серверные компоненты? Вот язык можно менять, но это только для локальных задач, я не знаю не одного человека который бы с такими задачами сталкивался.

Список баз пользователя находиться в файле ibases.v8i в каталоге C:\Users\Vasa\AppData\Roaming\1C\1CEStart

По поводу общих баз:
1. Берём файл 1cestart.exe из каталога C:\Program Files (x86)\1cv8\common
2. Кладём его в сетевой каталог, а рядом кладём 2 файла 1cescmn.cfg и bases.v8i
3. 1cescmn.cfg содержит в строки
CommonCfgLocation=\\server\1c\1cescmn.cfg
CommonInfoBases=\\server\1С\bases.v8i

4. bases.v8i содержит название и все параметры базы
5. всем пользователям ставим вместо ярлыка 1С на рабочий стол ярлык к файлу 1cestart.exe в общей папке

в интернете много об этом описано, вот одна из статей http://habrahabr.ru/post/179405/
14. Андрей К (h00k) 36 04.11.14 04:30 Сейчас в теме
(13) Dragonim
5. всем пользователям ставим вместо ярлыка 1С на рабочий стол ярлык к файлу 1cestart.exe в общей папке

Мда, печаль... а начали не так уж и плохо...

(12) LobodaYu
Как бы также красиво раздать пользователям список баз данных в домене?

Пример заполнения общих баз из ibcommon.v8i расположенного в DistrFolder. Код достаточно простой, прикрутить можно к любому логон скрипту.
'Добавление списка общих баз
Sub SetCommonBase

	Dim WshShell, FSO, OsVer, File1CEStart, ReadStr(),obj1CEStart,i,k,strNextLine

	Set WshShell = CreateObject("WScript.Shell")
	Set FSO = WScript.CreateObject("Scripting.FileSystemObject")

	OsVer = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion")

	'Проверка ОС
	if OsVer = "5.0" or OsVer = "5.1" or OsVer = "5.2" then

		'Windows 2000 or XP or 2003
		File1CEStart = WshShell.ExpandEnvironmentStrings("%ALLUSERSPROFILE%") & "\Application Data\1C\1CEStart\1CEStart.cfg"

	Else

		'Windows Vista or 7 or 2008
		File1CEStart = WshShell.ExpandEnvironmentStrings("%ALLUSERSPROFILE%") & "\1C\1CEStart\1CEStart.cfg"
	end if

	'File1CEStart – Файл 1CEStart.cfg содержит настройки, которые используют программы запуска 1CEStart.exe и 1Cv8s.exe, клиентские приложения 1Cv8.exe и 1Cv8c.exe

	'Проверяем наличие существует ли файл File1CEStart
	If (fso.FileExists(File1CEStart)) Then

		'Читаем из файла в массив
		Set obj1CEStart=fso.OpenTextFile(File1CEStart, 1,false,-1)
		
		i=0
		Do Until obj1CEStart.AtEndOfStream
			Redim Preserve ReadStr(i)
			strNextLine = obj1CEStart.Readline

			'Проверяем CommonInfoBases если есть то пропускаем
			If Instr(1,strNextLine,"CommonInfoBases=")=0 then
				ReadStr(i) = strNextLine
				i=i+1
			End if
		Loop

		obj1CEStart.Close
	
		Redim Preserve ReadStr(i)
		ReadStr(i)="CommonInfoBases=" & DistrFolder & "ibcommon.v8i"

		'Записываем из массива в файл
		Set obj1CEStart=fso.OpenTextFile(File1CEStart, 2,true,-1)
		
		For k=0 to i
			obj1CEStart.WriteLine ReadStr(k)
		Next
			obj1CEStart.Close
	End If

End Sub
Показать


П.С.: На 8.3 общие базы можно раздать еще красивше - веб-сервисом.
15. Юрий Лоек (loekyn) 14 17.11.14 16:59 Сейчас в теме
Что бы исключить ошибку с ключем -Directory переписал фрагмент вот так:

$AllPlatforms = (Get-ChildItem -Path $DistribDir | Where-Object {$_.Name -match $RegExpPatternNameFolderDistrib})
$Arr = $AllPlatforms.Clone()
For ($i = 0; $i -lt $Arr.Length; $i++) {
$Arr[$i] = ($Arr[$i]).Name + '.' + ($Arr[$i]).Name
}
Все работает.

У меня загвоздка в другом: хочу устанавливать именно сервер, а не клиента. С 32 проблем нет, а вот 64 - никак не идет. Что нам надо в iod подставлять? Смотрел через Орку, никаких ключей на эту тему там вроде нет. Совсем без ключей не устанавливает ничего, хотя что то долго делает.
16. Dim Dragonim (Dragonim) 85 18.11.14 08:14 Сейчас в теме
(15) Данная проблема была исправлена, смотри новый скрипт на https://github.com/Dragonim/1C8InstallAndUninstall.git

Я ни когда не задавался идеей массовой установки серверной части, поэтому данной возможности в скрипте не предусмотрено. Пожалуйста расскажите вашу причину в необходимости массовой установки серверной части, возможно я чего-то не знаю.

P.S.: (12) в данному сообщении описаны все возможные ключи установки, они задаются аналогично ключу "iod", кроме языка, он указывается согласно короткой нотации (en, ru и т.д.). Все эти команды описаны в документации по 1С Предприятию 8.3, Руководство администратора, Приложение 3. Описание и расположение служебных файлов, файл 1cestart.cfg.

Если вы хотите чтобы все эти параметры работали в скрипте, то необходимо убрать проверку ключа "iod" в функции InstallPlatform
17. Юрий Лоек (loekyn) 14 18.11.14 09:21 Сейчас в теме
Все что надо я в скрипте изменил. Возможность установки серверной части в скрипте есть - надо только ставить подходящие значения в iod.
Необходимость установки серверной части вызвана желанием полностью автоматизировать процесс обновления релизов 1С от конфигураций до платформы. На текущий момент не хватает сущего пустяка: как установить сервер 64. Что там в iod надо подставить? Нигде не нашел для сервера 64.
18. Евгений Беспалов (EugeneBespalov) 13.01.15 10:55 Сейчас в теме
(17) loekyn, какая жуть :) ставить платформу скриптом, это же бесконтрольно. обновление платформы все равно делает ответственный человек.
19. Евгений Беспалов (EugeneBespalov) 13.01.15 12:47 Сейчас в теме
скрипт взял с гитхаба, что через cmd что напрямую пишет одно и то же:
1Cinst.ps1 : Имя "1Cinst.ps1" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите
попытку.
строка:1 знак:1
+ 1Cinst.ps1 -dd '\\set-1c\platforms' -dl '\\set-1c\platforms\Logs' -dp 'ael' -ip ...
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (1Cinst.ps1:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
---
ось 8.1, админ домена
20. Dim Dragonim (Dragonim) 85 13.01.15 13:03 Сейчас в теме
(19)
1Cinst.ps1 ??? Не вижу такого файла на ГитХабе.

Видимо вы правили скрипты под себя и выставили некорректные параметры или изменили ту часть скриптов в которую не стоит лезть без чёткого понимания происходящего.
21. Евгений Беспалов (EugeneBespalov) 14.01.15 05:32 Сейчас в теме
(20) я изменил название файла? не люблю длинные бессмысленные названия, когда можно назвать коротко. Могу переименовать назад, результат не изменится. Содержимое правил только в контексте переменных:
param([string]$dd = "\\set-1c\platforms",
[string]$dl = "\\set-1c\platfoms\Logs",
[string]$ip = "last",
[string]$dp = "ael",
[string]$iod = "DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1")
cmd тоже изменил под свои переменные и под название скрипта:
@powershell "\\set-1c\platforms\1Cinst.ps1" -dd '\\set-1c\platforms' -dl '\\set-1c\platforms\Logs' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1'

прям сейчас запустил cmd не меняя содержимого и ничего не меняя в целом по отношению ко вчерашнему запуску, ошибка другая:
\\set-1c\platforms\1Cinst.ps1 : Невозможно загрузить файл \\set-1c\platforms\1Cinst.ps1, так как выполнение сценариев отключено в этой системе. Для получения дополнительных сведений см. about_Execution_Policies п
о адресу http://go.microsoft.com/fwlink/?LinkID=135170.
строка:1 знак:1
+ \\set-1c\platforms\1Cinst.ps1 -dd '\\set-1c\platforms' -dl '\\set-1c\platforms\L ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : Ошибка безопасности: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

проверяем разрешение на запуск скриптов
PS C:\Users\xxx> get-executionpolicy
Restricted
что логично, на вин8.1 это по дефолту, но тогда получается не выполняется строка из cmd:
@start /wait powershell "Set-ExecutionPolicy RemoteSigned -Force"
давайте запустим ее руками:
PS C:\Users\xxx> start /wait powershell "Set-ExecutionPolicy RemoteSigned -Force"
Start-Process : Не удается найти позиционный параметр, принимающий аргумент "Set-ExecutionPolicy RemoteSigned -Force".
строка:1 знак:1
+ start /wait powershell "Set-ExecutionPolicy RemoteSigned -Force"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~­~~~~
+ CategoryInfo : InvalidArgument: (:) [Start-Process], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand

выполним команду PS отдельно от start:
PS C:\Users\xxx> Set-ExecutionPolicy RemoteSigned -Force
Set-ExecutionPolicy : Отказано в доступе к разделу реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds­
\Microsoft.PowerShell". Чтобы изменить политику выполнения для области (LocalMachine), используемой по умолчанию, запустите Windows PowerShell с параметром "Запуск от имени администратора". Чтобы изменить политику выполнения для текущего пользователя, выполните "Set-ExecutionPolicy -Scope CurrentUser".
строка:1 знак:1
+ Set-ExecutionPolicy RemoteSigned -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyComma
nd

давайте исправим так, чтобы он делал для текущего пользователя :
PS C:\Users\xxx> Set-ExecutionPolicy RemoteSigned -Force -Scope CurrentUser

отработала нормально. теперь запустим файл скрипта:
PS C:\Users\xxx> "\\set-1c\platforms\1Cinst.ps1" -dd '\\set-1c\platforms' -dl '\\set-1c\platforms\Logs' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1'
строка:1 знак:33
+ "\\set-1c\platforms\1Cinst.ps1" -dd '\\set-1c\platforms' -dl '\\set-1c\platforms ...
+ ~~~
Непредвиденная лексема "-dd" в выражении или операторе.

и еще куча подобных ошибок, запустим так:
PS C:\Users\xxx> start "\\set-1c\platforms\1Cinst.ps1" -dd '\\set-1c\platforms' -dl '\\set-c\platforms\Logs' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1'
Start-Process : Не удается найти параметр, соответствующий имени параметра "dd".
строка:1 знак:39
+ start "\\set-1c\platforms\1Cinst.ps1" -dd '\\set-1c\platforms' -dl '\\set-1c\pla ...
+ ~~~
+ CategoryInfo : InvalidArgument: (:) [Start-Process], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand

давайте запустим без параметров, благо в коде есть параметры по умолчанию:
PS C:\Users\xxx> start "\\set-1c\platforms\1Cinst.ps1"

скрипт открылся в блокноте. у меня больше нет вариантов что и как пнуть.
22. Dim Dragonim (Dragonim) 85 14.01.15 07:53 Сейчас в теме
(21)
Вы не написали результат выполнения последней команды.
Вы изменили политику безопасности запуска скрипта для данного пользователя, это не позволит скрипту выполнить установку 1С.

попробуйте выполнить команду cd \\set-1c\platforms\ в PowerShell от текущего пользователя.

Есть подозрения, что у вас проблема с правами доступа. Для сетевых папок должно быть соблюдено 2 разрешения, первое это настройки прав доступа на уровне доступа к папке по сети, второе это настройки прав доступа на уровне файловой системы. Проверти права доступа к папке во вкладке Доступ и Безопасность соответственно. Если они выставлены правильно, то перезапишите все права доступа на уровне файловой системы для всех вложенных объектов.
23. Евгений Беспалов (EugeneBespalov) 14.01.15 08:30 Сейчас в теме
(22) нет результата выполнения последней команды, файл ps1 просто открылся в Блокноте.
Политику я не менял, я просто в ручном режиме выполнил команды из вашего же CMD, но так как изменение политики не работало не от имени администратора, то я попробовал изменения сделать для текущего пользоватля (текущий пользователь является администратором домена, что эквивалентно правам локального администратора.

"попробуйте выполнить команду cd \\set-1c\platforms\ в PowerShell от текущего пользователя. "
попробовать могу, но проблемы с этим не будет, так как у меня как у администратора домена там полный доступ. да и на данный момент эта папка используется в групповой политике для распространения 1С через механизм, описанный в статье http://infostart.ru/public/296227/ , поэтому настройки прав там сделаны корректно. Для верности проверил всё.

Через cmd не работает, так как первой же командой не может включить возможность запуска скриптов.
Так как я сам очень далек от PowerShell, то ориентируюсь например на эту статью http://pk-help.com/server/how-to-run-a-script-powershell/
Для теста запустим PS от имени админа и попробуем запустить скрипт:
PS C:\Windows\system32> \\set-1c\platforms\1cinst.ps1
False
False
False

программа установилась, захожу в панель управления, программы и компоненты, удаляю (надо сказать что значит он просто как 1С: Предприятие, без указания номера версии), запуска еще раз:
PS C:\Windows\system32> \\set-1c\platforms\1cinst.ps1
False

отличие только в количестве False на выходе. Все поставилось снова.
В общем нужно разобраться почему не работает включение запуска скриптов и как обойтись без запуска через start.
24. Dim Dragonim (Dragonim) 85 14.01.15 09:08 Сейчас в теме
(23)
Вы не только далеки от PowerShell но и от понимания работы Windows.

По команде start "\\set-1c\platforms\1Cinst.ps1" открывается блокнот, потому что это стандартная программа для открытия файла с расширением ps1, чему можно убедиться двойным кликом на фале с данным расширением. Данная команда в PS соответствует двойному клику по файлу.

При запуске PS от имени админа попробуйте выполнить команду Set-ExecutionPolicy RemoteSigned -Force, а после команду Set-ExecutionPolicy Restricted -Force. Если ни каких ругательств не будет, то выполните файл 1C8InstallAndUninstall.cmd от имени администратора и у вас всё заработает.

При установке 1С из скрипта номер версии указывается в столбце Версия.

"False" это выводятся результаты работы некоторых строк в скрипте, что не говорит о результате работы скрипта. Результат работы скрипта можно увидит в логе.
25. Евгений Беспалов (EugeneBespalov) 14.01.15 09:18 Сейчас в теме
(24)
"Вы не только далеки от PowerShell но и от понимания работы Windows."
не будем начинать со взаимных оскорблений, я прекрасно понимаю как работает Start, я ради вас, чтобы вы видели все мои действия сделал все возможные варианты использования и сказал о результатах. Если хотите могу молчать, тогда вам придется проявить телепатические способности.

"При запуске PS от имени админа попробуйте выполнить команду Set-ExecutionPolicy RemoteSigned -Force, а после команду Set-ExecutionPolicy Restricted -Force. Если ни каких ругательств не будет, то выполните файл 1C8InstallAndUninstall.cmd от имени администратора и у вас всё заработает."
PS C:\Windows\system32> Set-ExecutionPolicy RemoteSigned -Force
PS C:\Windows\system32> Set-ExecutionPolicy Restricted -Force
Set-ExecutionPolicy : Оболочка Windows PowerShell успешно обновила вашу политик
у выполнения, но данный параметр переопределяется политикой, определенной в бол
ее конкретной области. В связи с переопределением оболочка сохранит текущую пол
итику выполнения "RemoteSigned". Для просмотра параметров политики выполнения в
ведите "Get-ExecutionPolicy -List". Для получения дополнительных сведений введи
те "Get-Help Set-ExecutionPolicy".
строка:1 знак:1
+ Set-ExecutionPolicy Restricted -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], Sec
urityException
+ FullyQualifiedErrorId : ExecutionPolicyOverride,Microsoft.PowerShell.Com
mands.SetExecutionPolicyCommand

А зачем нужна установка от имени админа? Руками я могу и без PS установить.

"При установке 1С из скрипта номер версии указывается в столбце Версия."
это понятно, пишу о различиях с обычной установкой.



26. Dim Dragonim (Dragonim) 85 14.01.15 09:28 Сейчас в теме
(25)
Ошибка при выполнении Set-ExecutionPolicy Restricted -Force связана с тем что вы выполняли ранее команду Set-ExecutionPolicy RemoteSigned -Force -Scope CurrentUser. Выполните команду Set-ExecutionPolicy Restricted -Force -Scope CurrentUser, а после Set-ExecutionPolicy Restricted -Force. Ошибка должна пропасть.

"А зачем нужна установка от имени админа? Руками я могу и без PS установить." При установке руками без явного указания запустить установочный файл от имени Администратора или установки из среды запущенной от имени Администратора, во всех системах выше Windows XP, вам придется повышать права во время установки. В это нет отличий.

Запускать файл 1C8InstallAndUninstall.cmd от имени Администратора надо по 2 причинам, во-первых чтобы сработали команды Set-ExecutionPolicy RemoteSigned -Force и Set-ExecutionPolicy Restricted -Force, а во-вторых чтобы произвести установку 1С. Для эксперимента попробуйте выполнить Set-ExecutionPolicy RemoteSigned -Force в PS от имени Администратора, а после просто запустить PS без повышения привилегий и запустить скрипт по установке 1С. Не забудьте закрыть возможность запуска скриптов выполнив Set-ExecutionPolicy Restricted -Force в PS от имени Администратора.
27. Евгений Беспалов (EugeneBespalov) 14.01.15 10:08 Сейчас в теме
допустим я все сделал и все работает, как это исправит ошибку:
PS C:\Users\xxx> start "\\set-1c\platforms\1Cinst.ps1" -dd '\\set-1c\platforms' -dl '\\set-c\platforms\Logs' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1'
Start-Process : Не удается найти параметр, соответствующий имени параметра "dd".
строка:1 знак:39
+ start "\\set-1c\platforms\1Cinst.ps1" -dd '\\set-1c\platforms' -dl '\\set-1c\pla ...
+ ~~~
+ CategoryInfo : InvalidArgument: (:) [Start-Process], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand
28. Dim Dragonim (Dragonim) 85 14.01.15 10:16 Сейчас в теме
(27)
Я не зря ранее писал про команду start "\\set-1c\platforms\1Cinst.ps1" которая открывала файл в блокноте. Вы допускаете ту же ошибку.

start "\\set-1c\platforms\1Cinst.ps1" -dd '\\set-1c\platforms' -dl '\\set-c\platforms\Logs' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1'

Данной командой из PS работать не будет. Данная команда в PS превращается в:

Start-Process -FilePath "\\set-1c\platforms\1Cinst.ps1" -dd '\\set-1c\platforms' -dl '\\set-c\platforms\Logs' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1'

Разумеется у командлета нет параметров -dd, -dl, -dp, -ip, -iod о чём сообщает полученная вами ошибка.

Для запуска скрипта используйте прилагающийся cmd файл запуская его от имени Администратора. Необходимые параметры запуска прописывайте в cmd файле.

Если очень сильно охота запустить скрипт из PS то можете попробовать команду

Start-Process -FilePath powershell.exe -ArgumentList "'\\set-1c\platforms\1Cinst.ps1' -dd '\\set-1c\platforms' -dl '\\set-c\platforms\Logs' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1'"
29. Евгений Беспалов (EugeneBespalov) 14.01.15 10:29 Сейчас в теме
(28) понял где туплю, я в FAR нажимаю стрелку вверх и выбираю не ту строку, конечно нужно запускать

powershell "\\set-1c\platforms\1Cinst.ps1" -dd '\\set-1c\platforms' -dl '\\set-1c\platforms\Logs' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1'

которая работает

---------------------------------------------------------------------------------
2015.01.14 13:19:42 Начало работы скрипта
2015.01.14 13:19:50 Последняя (старшая) платформа 8.3.5.1383 уже установлена.
2015.01.14 13:19:50 Окончание работы скрипта
---------------------------------------------------------------------------------

но это после включения разрешения на запуск руками.
но будет ли работать включение разрешения на запуск скрипта от имени системной учетки при запуске из групповой политики? для локального варианта понятно что нужно пользоваться админом, а через групповые? просто у меня в политиках этот скрипт стоит со вчерашнего для а в логах пусто.
30. Dim Dragonim (Dragonim) 85 14.01.15 10:37 Сейчас в теме
(29)

Как установить, обновить или удалить Платформу 1С, если имеется домен? Читайте статью, всё описное в ней проверено и работает.
31. Евгений Беспалов (EugeneBespalov) 14.01.15 12:42 Сейчас в теме
(30) я хз, политика отрабатывает, ошибок нет, лог (ваш) пустой, эксперимент с cmd не давал картины о правильной выполнимости через политики, он работал только при запуске руками.
в статье нет ни слова о таких проблемах.

я думаю все же не сработало включение выполнения скриптов.
32. Евгений Беспалов (EugeneBespalov) 14.01.15 13:21 Сейчас в теме
(30) всё работает. причина была весьма странной - лог файл обновляется значительно позже загрузки самого компьютера (мин 5-7). вообще для теста добавил пару строк в cmd:
@echo 1 >>"\\set-1c\platforms\Logs\text.log"
@start /wait powershell "Set-ExecutionPolicy RemoteSigned -Force"
@echo 2 >>"\\set-1c\platforms\Logs\text.log"
@powershell "\\set-1c\platforms\1Cinst.ps1" -dd '\\set-1c\platforms' -dl '\\set-1c\platforms\Logs' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1'
@echo 3 >>"\\set-1c\platforms\Logs\text.log"
@start /wait powershell "Set-ExecutionPolicy Restricted -Force"
@echo 4 >>\\set-1c\platforms\Logs\text.log
@echo --- >>"\\set-1c\platforms\Logs\text.log"

сделал gpupdate /force и в ребут. после ребута появился файл лога от echo, захожу в лог скрипта, а там последний ребут до модификации cmd. удивился. много думал. отвлекся на другие дела. снова открываю лог скрипта, а там свежая информация об отработанном скрипте. пока это объяснить не могу, какая-то мистика. завтра будут логи по другим машинам, посмотрим. на машинах с XP не отработает, я там еще PS не ставил.
спасибо за скрипт и что потратили время на разбор.
33. Евгений Беспалов (EugeneBespalov) 15.01.15 05:47 Сейчас в теме
сегодня смотрю результаты работы скрипта:
---------------------------------------------------------------------------------
2015.01.15 07:39:54 Начало работы скрипта
2015.01.15 07:39:56 Последняя (старшая) платформа уже установлена.
2015.01.15 07:39:56 Окончание работы скрипта
---------------------------------------------------------------------------------

и в голову пришла мысль, что было бы неплохо иметь в логе номер версии продукта. полез в исходник, вижу:
WriteLog $LogFile "Последняя (старшая) платформа $LastDistr уже установлена."
вроде как должна версия выводиться. проверяю все логи всех машин - везде так. И тут звонит телефон, чел вышел из отпуска, жалуется что 1С у него не запускается, мол версии не совпадают, смотрю логи, а у него результат работы скрипта показывает что старшая платформа уже установлена. Пошел в тот кабинет, там еще два компа выключены и без юзеров, включил, скрипт отработал, в логах написал что старшая версия уже установлена, но по факту это не так. Одна машина Windows 7, две - XP, все системы обновлены через WSUS, отдельно пробовал поставить KB с PS 2.0 - говорит что уже есть в системе. Где может быть косяк?
34. Dim Dragonim (Dragonim) 85 15.01.15 09:58 Сейчас в теме
(33)
Попробуйте передать скрипту параметр ip с конкретной версией 1С. Посмотрите на логи.
35. Евгений Беспалов (EugeneBespalov) 15.01.15 10:32 Сейчас в теме
---------------------------------------------------------------------------------
2015.01.15 13:24:07 Начало работы скрипта
2015.01.15 13:24:07 Установка 1С:Предприятие, версия 8.3.5.1383
=== Начало записи журнала: 15.01.2015 13:24:08 ===
Ошибка 1945. Недостаточно прав для завершения повторного объявления этого продукта. Для повторного объявления необходимо, чтобы локальная системная учетная запись выступила инициатором вызова API MsiAdvertiseScript, например через групповую политику развертывания приложений.
=== Завершение записи журнала: 15.01.2015 13:24:09 ===
=== Начало записи журнала: 15.01.2015 13:24:09 ===
=== Завершение записи журнала: 15.01.2015 13:24:10 ===
2015.01.15 13:26:26 Окончание работы скрипта
---------------------------------------------------------------------------------
добавлю что опять ситуация с появлением лога повторяется, то есть комп загрузился, я залогинился, зашел в папку с логами, а там пусто. подождал примерно 3 минуты и только потом появился лог. значит ли что установка программы идет в фоне когда юзер уже залогинился и не вызовет ли это проблем в работе, например юзер утром пришел, залогинился, запускает 1С а у него ошибка несовпадения версий?
36. Dim Dragonim (Dragonim) 85 15.01.15 11:22 Сейчас в теме
(35)
Скрипт устанавливается не во время логирования пользователя, а после включения компьютера. Попробуйте включить компьютер без входа под конкретного пользователя, через некоторое время скрипт отработает.

Задержка при запуске скрипта это нормальное явление. Пользователь приходит утром, логиниться, пытается зайти в 1С, у него не получается, уходит наливать себе чай, возвращается, заходит в 1С, всё ОК.
37. Евгений Беспалов (EugeneBespalov) 16.01.15 04:50 Сейчас в теме
(36) я знаю разницу между политикой для пользователя и для компьютера.

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

как вы себе это представляете на практике?

Задержка при запуске скрипта это нормальное явление. Пользователь приходит утром, логиниться, пытается зайти в 1С, у него не получается, уходит наливать себе чай, возвращается, заходит в 1С, всё ОК.

Вы наверное очень мало работали с пользователями. Никто не пойдет пить чай, а если и пойдет, то повторно никто ничего запускать не будет. Просидят пол дня, а потом с визгами "у меня 1с пол дня не работает" будут названивать. И зачем мне такая автоматизация? :)

В текущей реализации это нерабочая схема. Вам нужно было все нюансы работы скрипта озвучить в статье, я бы, например, тогда не тратил на это время.
38. Dim Dragonim (Dragonim) 85 16.01.15 22:02 Сейчас в теме
(37)
Задержка при запуске скрипта в домене при групповой политики на группу компьютеров это поведение AD, а не особенности работы скрипта. Если вы знаете как с этим бороться то просветите нас всех, мы будем благодарны. Для меня это не является проблемой, т.к. я устанавливаю новую платформу за несколько дней до её установки на сервере, а мои пользователи на предложение подождать 10 минут и попробовать снова реагируют абсолютно нормально если такая просьба поступает 1 раз в месяц или реже.

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


У хорошего админа всегда так, очень долго запрягает, а после, очень быстро едет, это называется автоматизация. В данном случае за вас сделана большая часть работы по обновлению 1С Платформы и выложена в виде скрипта. Если вы хотите сделать эту работу или подобную сами, или бегать от компьютера к компьютеру после работы устанавливая платформу 1С в ручном режиме, я не в праве вам мешать.

Хочу напомнить пользователям данной теме, что я не прошу денег за свою работу. Если у вас имеется желание отблагодарить автора, то вы можете скачать скрипт за 1 $m или перевести автору более крупную сумму $m, если у вас нет желание благородить автора или нет такой возможности то вы можете забрать скрипт с гит хаба. Если вы хотите дополнить скрипт или предложить хорошую идею то я с удовольствием вас прочту, если хотите обругать автора и/или скрипт, то поставьте теме минус и удалить скрипт со своего компьютера. Помните, что проделанная работа другими людьми выкладывается в отрытый доступ бесплатно и никто вам ни чего не обязан.
40. Евгений Беспалов (EugeneBespalov) 17.01.15 11:12 Сейчас в теме
(38) у меня платформа обновляется через АД в автоматическом режиме, никто никуда не бегает, никакие скрипты никто не ждет и чай не пьет. Ваш скрипт изучаю в целях самообразования, так как не знаком с PS, подобная схема привлекла внимание так как на ее основе мог бы делать другие вещи. Как показала практика - не все так красиво как хотелось бы. Никто не заставляет вас работать, но если уж написали - будьте добры не отказываться. Платить за что-то я привык, если оно работает как требуется. Вы не озвучили много допущений в работе скрипта, мне это не нравится и я это озвучил.
Установка платформы по срокам - не моя забота, мне дают релиз и говорят что с понедельника она в работе, создаю пакет и обновляю политику, все. Утром все в работе. Сидеть на телефоне и слушать что у кого-то что-то не работает не входит в мой список развлечений.
42. Dim Dragonim (Dragonim) 85 17.01.15 13:57 Сейчас в теме
(40)
у меня платформа обновляется через АД в автоматическом режиме, никто никуда не бегает, никакие скрипты никто не ждет и чай не пьет.


Я с большим удовольствием прочту вашу статью об автоматизации процесса установки/удаления/обновления платформы 1С в АД.
45. Евгений Беспалов (EugeneBespalov) 19.01.15 09:10 Сейчас в теме
(42) эта статья есть, она не моя, с нее я и пришел на вашу статью.
39. Юрий Дешин (blackhole321) 497 17.01.15 01:10 Сейчас в теме
(37) EugeneBespalov
На какой версии ОС наблюдаются задержки?
В Windows 2012 R2 и Windows 8.1 время задержки выполнения logon скриптов по умолчанию составляет 5 минут. Вы можете изменить это поведение изменив значение параметра GPO
Computer Configuration > Administrative Templates > System > Group Policy > Configure Logon Script Delay в 0, чтобы запретить задержку.
http://blogs.technet.com/b/platformspfe/archive/2014/03/08/windows-8-1-logon-script-delay-group-policy-setting.aspx
41. Евгений Беспалов (EugeneBespalov) 17.01.15 11:17 Сейчас в теме
(39) blackhole321, win8.1, win7, может я что-то знаю, но политики применяемые на компьютеры всегда не давали появиться окну для входа пользователя. Даже сейчас после включения скрипта в политики закрузка системы удлиннилась по времени на 1 минуту примерно, болтается надпись что-то вроде "Ожидание..." (win8.1) в win7 тоже какая-то надпись. И пока не отработает скрипт для ПК залогиниться не получается. У меня так много чего распространяется через VBS.
43. Юрий Дешин (blackhole321) 497 17.01.15 15:06 Сейчас в теме
(41) EugeneBespalov
Дело в том, что существует два режима выполнения групповых политик - синхронный и асинхронный. В асинхронном режиме выполнение происходит в фоновом режиме и не препятствует входу пользователя в систему. По умолчанию выполнение осуществляется в асинхронном режиме. Вы можете изменить данное поведение, установив опцию
Computer Configuration\Policies\Administrative Templates\System\Logon\Always wait for the network at computer startup and logon

http://blogs.technet.com/b/grouppolicy/archive/2013/05/23/group-policy-and-logon-impact.aspx
44. Евгений Беспалов (EugeneBespalov) 19.01.15 09:01 Сейчас в теме
(43) blackhole321,

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

Если вы включаете этот параметр политики, при обнаружении медленного сетевого подключения обработка групповой политики всегда выполняется асинхронно.
Клиентские компьютеры не будут ожидать полной инициализации сети при загрузке и входе пользователя. Существующие пользователи будут входить в систему, используя кэшированные учетные данные,
что сократит время входа в систему. Групповая политика будет применяться в фоновом режиме, когда сеть станет доступной.
Обратите внимание, что, поскольку это фоновое обновление, расширения, требующие синхронной обработки, такие как «Установка программного обеспечения» и «Перенаправление папок»,
а также расширение предпочтений «Сопоставления дисков» не будут применяться."

судя по описанию это не совсем так.
46. Евгений Дегтярев (DEG156) 21 29.01.15 08:29 Сейчас в теме
Установил PowerShell 3.0.

Вылетает ошибка: не удается индексировать в объект типа system.string
47. Евгений Дегтярев (DEG156) 21 29.01.15 08:54 Сейчас в теме
Unable to index into an object of type System.String.
At \\server\1C_Soft\1C8InstallAndUninstall.ps1:218 char:1
+ $Arr[$i] = $Arr[$i] + '.' + $Arr[$i]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : CannotIndex
48. Dim Dragonim (Dragonim) 85 29.01.15 17:50 Сейчас в теме
(47)

Не могу ответить на ваш вопрос, т.к. у меня в файлах это далеко не 218 строка.
49. Евгений Дегтярев (DEG156) 21 29.01.15 17:54 Сейчас в теме
# было найдено много дистрибутивов, найдём самый старший из них
# тут я не смог придумать красивого и эффективного алгоритма, поэтому получилось ЭТО
# алгоритм вымещения. будем брать по порядку каждую цифру до точки и искать максимальную из них.
# те элементы у которых цифра меньше найденной максимальной будут зануляться
$Arr = $AllPlatforms.Clone()
# чтобы потом узнать какой из элементов ещё не занулён, продублируем строки
For ($i = 0; $i -lt $Arr.Length; $i++) {
$Arr[$i] = $Arr[$i] + '.' + $Arr[$i]
}

Ошибка в этом месте: $Arr[$i] = $Arr[$i] + '.' + $Arr[$i]
50. Евгений Дегтярев (DEG156) 21 29.01.15 17:57 Сейчас в теме
Переменная $Arr возвращает "8.2.19.121"
51. Dim Dragonim (Dragonim) 85 29.01.15 21:28 Сейчас в теме
(50)

В переменной $Arr должен находиться массив скопированный из переменной $AllPlatforms. Проверьте что возвращается в переменной $Arr[0].и $AllPlatforms[0].
52. c4uran mmm (c4uran) 27.02.15 16:20 Сейчас в теме
на локальном компе работает, а на удаленном нет вываливает ошибку тут:
$Arr = $AllPlatforms.Clone()

нельзя было сделать определение последней версии по дате создания файла (прим. Data1.cab) никто в здравом уме вроде не будет менять его
53. Антон Ильиных (AdvUser) 25.04.15 01:38 Сейчас в теме
Лично у меня скрипт через групповые политики так и не запустился, хотя при ручном запуске под правами администратора отрабатывает корректно. Кроме того выполнение скриптов через групповые политики работает с задержкой, тогда как обновить платформу нужно здесь и сейчас не ожидая когда произойдет тайное шаманство...
Выход использовать бесплатную утилиту PsExec
Команда на запуск скрипта будет иметь следующий вид:
psexec @С:\локальная_папка\comp.txt -u домен\Имя_Администратора \\сервер\расшаренная_папка\1C8InstallAndUninstall.cmd
comp.txt - файл где перечислены компы на которых нужно обновить платформу. Имя каждого компа должно начинаться с новой строчки, а не через запитую как сказано в инструкции утилиты.
При старте утилита запросит пароль Администратора, при этом пароль нигде не светится и не сохраняется.

За скрипт отдельное спасибо!
TeMochkiN; +1 Ответить
54. Артём Артёмов (TeMochkiN) 18.05.15 10:09 Сейчас в теме
да, через групповые политики чёт не работает. в логах всех машин пишет

2015.05.14 16:31:19 Начало работы скрипта
2015.05.14 16:31:25 Последняя (старшая) платформа уже установлена.
2015.05.14 16:31:25 Окончание работы скрипта

для исключения проблемы с правами, у папки с дистрибутивами ставил полный доступ для стандартной группы "Все" на уровне файловой системы и сетевой папки
чего-то вы нам не дорассказали
55. Dim Dragonim (Dragonim) 85 18.05.15 14:41 Сейчас в теме
(54) TeMochkiN,
Изменил файлы на инфостарте (взял с гитхаба) перекачайте архив. Теперь должен говорить какую из версий он считает последней (старшей), возможно это поможет выявить ошибку.

(53) AdvUser,
Задержка скрипта при работе в домене уже обсуждалась выше (ответ (39)).Это проблема доменной политики.

В домене скрипт работает странно. Иногда всё ок, иногда не отрабатывает. В общем через раз работает, а разбираться что к чему нет времени и достаточно большой выборки компьютеров. Если появиться время то допишу скрипт для удалённой установке в домене без групповой политики, на подобии PsExec, но судя по загрузу до этого вряд ли руки дойдут.
56. Дим Дим (demaxxx) 07.09.15 15:53 Сейчас в теме
Все так просто пишут про запуск скрипта через батник или cmd, почему то никто не упоминает простую деталь - CMD не поддерживает пути в общие папки, поэтому батник не работает. (Указанный путь был использован при запуске CMD.EXE в качестве текущей папки.
CMD.EXE не поддерживает пути UNC.)
57. Илья Троицкий (ivtroitskiy) 24.09.15 08:56 Сейчас в теме
Добрый день! А есть версия скрипта для Power Shell версии 2?
58. Василий Поддубный (electro777) 28.09.15 17:41 Сейчас в теме
А каким образом переносился код скрипта в cmd, или просто сохранили с расширением cmd?
59. Сергей Шевченко (demon_infernal) 29 09.11.15 07:41 Сейчас в теме
Спасибо за скрипт.
Отметил некорректную работу скрипта в том случае, если в папке с дистрибутивами лежит только одна папка.
В таком случае строчка
$AllPlatforms = (Get-ChildItem -Path $DistribDir | Where-Object { ($_.Mode -match "^d*") -and ($_.Name -match $RegExpPatternNameFolderDistrib) }).Name

возвращает массив из 10ти элементов, такого вида:
8
.
3
.
6
.
2
3
9
0

- если в папке с дистрибутивами была только одна папка с именем "8.3.6.2390"
60. Dim Dragonim (Dragonim) 85 08.12.15 06:59 Сейчас в теме
Скрипт обновлён. Все подробности в нижней части поста.
61. Дмитрий шарапов (Liks) 10.01.16 23:01 Сейчас в теме
dp Может принимать несколько значений? через запятую?
62. Dim Dragonim (Dragonim) 85 11.01.16 11:37 Сейчас в теме
(61) Liks, Нет
Можно запустить скрипт несколько раз указав ip='no', а dp такое какое хотите
63. Roman Kos (Burninf) 21.01.16 12:09 Сейчас в теме
Не очень понятно - при установке уровня безопасности RemoteSigned WinXP требует подписи скрипта, если скрипт находится в сети. Локально же выполняется нормально. Тогда как его запускать из сетевого каталога по этому руководству, если оттуда он наотрез отказывается выполняться?
64. Dim Dragonim (Dragonim) 85 21.01.16 22:35 Сейчас в теме
(63) Burninf, сочувствую
Могу лишь посоветовать изменить bat файл. Сначала скопировать файл скрипта на локальный компьютер (команда copy), выполнить скрипт с локального диска, удалить файл скрипта (команда del).
65. 1 1 (incol) 19.02.16 16:03 Сейчас в теме
при запуске скрипта вообще ничего не происходит , локально , политику безопасности снимаю вручную и запускаю скрипт , отрабатывает закрывается без ошибок....
66. Dim Dragonim (Dragonim) 85 19.02.16 17:48 Сейчас в теме
(65) incol, надо смотреть что пишится в логах
67. 1 1 (incol) 20.02.16 13:29 Сейчас в теме
(66) спасибо что откликнулись! нашел ошибку оказывается регистр символов важен! , нашлась дургая проблема , все устанавливается как надо, но установлен ключ $dp = "no" , а удаление все равно происходит старых версий... сталкивался кто нибудь с этим?
68. Елена Фролова (lenafV) 12.11.16 17:28 Сейчас в теме
Выдает ошибку 1945. Удаляет старые версии отлично, но вот новую не устанавливает, как исправить эту ошибку?...

Параметры запуска скрипта: -dd '\\WORK1C\Distr' -dl '\\WORK1C\Logs' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=0 THINCLIENTFILE=0'
2016.11.12 23:55:09 Начало работы скрипта
2016.11.12 23:55:30 Установка 1С:Предприятие, версия 8.3.9.1850
=== Начало записи журнала: 12.11.2016 23:55:31 ===
Ошибка 1945. You do not have sufficient privileges to complete the re-advertisement of this product. Re-advertisement requires initiation by a local system account calling the MsiAdvertiseScript API, such as through Group Policy Software Deployment.
=== Завершение записи журнала: 12.11.2016 23:55:32 ===
2016.11.12 23:55:36 Окончание работы скрипта
69. Dim Dragonim (Dragonim) 85 17.11.16 12:20 Сейчас в теме
(68)
Вот что пишет о данной ошибке MSDN https://msdn.microsoft.com/en-us/library/windows/desktop/aa372835(v=vs.85).aspx

The process calling MsiAdvertiseScript must be running under the LocalSystem account.
Что примерно переводится как: процесс должен быть запущен от имени пользователя "СИСТЕМА"

Возможно ошибка вызвана тем что у вас установлен запуск скрипта во время залогинивание пользователей в систему, а не во время запуска системы.
70. Adapter Бахтыреев (adapter) 474 22.11.16 23:56 Сейчас в теме
Смотрю тоже кто то с этим заморочился.

По умолчанию автоматическое обновление платформы 1С можно настроить средствами самой платформы. Есть у 1cestart.exe такой режим. Но он предполагает права локального админа у пользователей.

Через групповые политики неудобно потому что с большой задержкой. Сработает только когда компы перегрузятся. Т.е. на следующий день. А некоторые вообще свои компы не выключают на ночь. В итоге тяжело следить у кого вообще не отработало, а у кого еще не отработало :)

Определить группу компьютеров и установить платформу можно и без GPO или назначенных заданий. Например через psExcec. Тоже поддерживается современными Windows из коробки. Не важно домен у вас или нет, а может и вообще VPN с филиалами. И запускается сразу, без суточного ожидания перезагрузки. Проблема в том что бы потом вести актуальность этих групп, добавлять\удалять компы. А если еще есть подгруппы с разными версиями платформ по базам то вообще тяжело.

Я когда то делал это в HelpDesk Corp
http://infostart.ru/public/73535/

через Дистанционное Выполнение Команд
http://helpdesk.adaptersoft.ru/?p=554
71. Armando Armando (Armando) 1385 23.11.16 21:47 Сейчас в теме
С автоматным обновлением серверной части 64 бит кто-нибудь заморачивался?
Как устанавливаете com компоненту? Как конфиги веб-серверов исправляете под новую версию?
72. Виктор Шишов (vshish) 103 24.11.16 08:43 Сейчас в теме
Почитал. Очень интересный скрипт. Попробую, но у меня вопрос-идея. Если надо установить только тонкий клиент и есть дистрибутив тонкого клиента, то установку производить с каталога дистрибутива тонкого клиента. (все дело в размерах дистрибутивов)
пысы. Хотя конечно можно и не заморачиваться, а создавать два набора папок дистрибутивов. (для тонкого и толстого клиента)
73. Dim Dragonim (Dragonim) 85 25.11.16 14:23 Сейчас в теме
(72) Я проверил. Установка тонкого клиента проходит без проблем. В скрипт добавлена проверка на невозможность установки тонкого 64 битного клиента на 32 битную платформу.
74. Evgeny Gerasimov (Fox_sx) 04.12.16 15:34 Сейчас в теме
Дорабатывал старую версию для себя.. если пригодится:

менял строку bat-файла:
@powershell "\\Server\1CDistr\1C8InstallAndUninstall.ps1" -dd '\\Server\1CDistr' -dl '\\Server\1CLogs' -ip 'last' -dp 'ael' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1
на:
@powershell "%~dp0\1C8InstallAndUninstall.ps1" -dd %~dp0 -dl '%~dp01CLogs' -ip 'last' -dp 'ael' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1'

%~dp0 - текущая папка исполняемого файла

менял PS-файл:

Текущая папка:
param([string]$dd = "\\1CServer\1CDistr",
[string]$dl = "\\1CServer\1CLogs",
на:
param([string]$dd = (Get-Item -Path ".\" -Verbose).FullName,
[string]$dl = (Get-Item -Path ".\" -Verbose).FullName + "1CLogs"

Проверка разрядности:
$ComputerName = $Env:COMPUTERNAME
$PCbased = (Get-WmiObject Win32_ComputerSystem -computer $ComputerName).systemtype
If
($PCbased -eq "X86-based PC")
{$pathdll = join-path $Env:SystemDrive "Program Files"}
else {
if
($PCbased -eq "X64-based PC")
{$pathdll = join-path $Env:SystemDrive "Program Files (x86)"}
else {}
}

Регистрация comcntr.dll: (не "регилась" автоматом)
Start-Process 'regsvr32.exe' "/s ""$pathdll\1cv8\$ProductVer\bin\comcntr.dll" -Wait -NoNewWindow -PassThru

Также иногда кидал в текущую папку ПолезнуюДЛЛ.dll: (в особых случаях)
Copy-Item -Path ($DistribDir+"ПолезнаяДЛЛ.dll") -Destination ($pathdll + "\1cv8\" + $ProductVer + "\bin\ПолезнаяДЛЛ.dll") -Force

Лог получался примерно такой:
Параметры запуска скрипта: -dd '\\pc14\Установка1с\Distr\' -dl '\\pc14\Установка1с\Distr\1CLogs' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1'
2016.02.12 10:01:10 Начало работы скрипта
2016.02.12 10:01:15 Удаление 1С:Предприятие, версия
2016.02.12 10:01:16 Установка 1С:Предприятие, версия 8.3.7.1917
2016.02.12 10:01:31 Скопирован файл ПолезнаяДЛЛ.dll из \\pc\Установка1с\Distr\ в C:\Program Files (x86)\8.3.7.1917\bin
2016.02.12 10:01:33 Регистрация dll: C:\Program Files (x86)\1cv8\8.3.7.1917\bin\comcntr.dll
2016.02.12 10:01:33 Найден только один дистрибутив 8.3.7.1917. Удаление произведено не будет, т.к. данный дистрибутив является последним (старшим).
2016.02.12 10:01:33 Окончание работы скрипта
demon_infernal; +1 Ответить
75. Николай Вол (NixonRu) 09.01.17 18:19 Сейчас в теме
Добрый день
помогите пожалуйста
скрипт не выполняется при старте пк
если потом залогинеться и запустить в ручную то все срабатывает


запускается пк скрипт выполняется таксегодня в 17:18
Параметры запуска скрипта: -dd '\\neosrvkrd\share\1cdistr' -dl '\\neosrvkrd\share\1cdistr\1clog' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=0 THINCLIENTFILE=0'
2017.01.09 17:03:46 Начало работы скрипта
2017.01.09 17:03:52 Установка 1С:Предприятие, версия 8.3.9.2033
2017.01.09 17:03:54 После установки не была найдена платформа 8.3.9.2033 на данном компьютере. Работа скрипта прервана.
2017.01.09 17:03:54 Окончание работы скриптасегодня в 17:18
после загрузки пк запускаю в ручную в итоге все ставитсясегодня в 17:21
Параметры запуска скрипта: -dd '\\neosrvkrd\share\1cdistr' -dl '\\neosrvkrd\share\1cdistr\1clog' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=0 THINCLIENTFILE=0'
2017.01.09 17:19:36 Начало работы скрипта
2017.01.09 17:19:44 Установка 1С:Предприятие, версия 8.3.9.2033
=== Начало записи журнала: 09.01.2017 17:19:45 ===
=== Завершение записи журнала: 09.01.2017 17:20:18 ===
=== Начало записи журнала: 09.01.2017 17:20:18 ===
=== Завершение записи журнала: 09.01.2017 17:20:30 ===
2017.01.09 17:20:33 Окончание работы скрипта
76. Dim Dragonim (Dragonim) 85 09.01.17 18:24 Сейчас в теме
(75) Судя по ошибки у вас не хватает прав на установку в первом случае, а во втором случае вы производите запуск от имени администратора. У вас стоит установка скрипта при загрузки компьютера или при входе пользователя? Т.е. logon или startup.
77. Николай Вол (NixonRu) 09.01.17 20:11 Сейчас в теме
(76)
конфигурация компьютера
автозагрузка

78. Roscha (user643327_infostart) 25.01.17 13:05 Сейчас в теме
Подскажите пожалуйста:

как определить версию, которая [была] установлена на компьютере,
не имея к нему непосредственного доступа, а только удалённый (т.е. только по сети)
или имея только диск с этого компьютера,
загрузиться с которого нет возможности
?

Выглядит оно примерно вот так:

C:\Program Files\1cv8\8.3.5.1486\bin\1cv8.exe	823,79 Кб	05.03.2015 01:37	-a--
C:\Program Files\1cv8\8.3.5.1486\bin\1cv8c.exe	637,29 Кб	05.03.2015 01:37	-a--
C:\Program Files\1cv8\8.3.5.1486\bin\1cv8s.exe	771,29 Кб	05.03.2015 01:37	-a--
C:\Program Files\1cv8\8.3.5.1517\bin\1cv8.exe	823,79 Кб	20.03.2015 02:43	-a--
C:\Program Files\1cv8\8.3.5.1517\bin\1cv8c.exe	637,29 Кб	20.03.2015 02:43	-a--
C:\Program Files\1cv8\8.3.5.1517\bin\1cv8s.exe	771,29 Кб	20.03.2015 02:44	-a--
C:\Program Files\1cv8\common\1cestart.exe	378,29 Кб	20.03.2015 02:43	-a--
C:\Program Files\1cv82\8.2.18.109\bin\1cv8.exe	674,29 Кб	09.07.2013 17:36	-a--
C:\Program Files\1cv82\8.2.18.109\bin\1cv8c.exe	531,79 Кб	09.07.2013 17:36	-a--
C:\Program Files\1cv82\8.2.18.109\bin\1cv8s.exe	680,79 Кб	09.07.2013 17:36	-a--
C:\Program Files\1cv82\common\1cestart.exe	335,79 Кб	09.07.2013 17:36	-a--
Показать


Всегда ли версия, указанная при сборке (т.е. свойства файла, вкладка "Подробно" в проводнике Win7) соответствует действительности?
Всегда ли её видно?
Каким [именно/ещё] образом проверяется совместимость (с файловой базой, с конфигурацией, с сервером приложений, с SQL-базой)
?
Прикрепленные файлы:
79. Roscha (user643327_infostart) 25.01.17 13:06 Сейчас в теме
Если не туда написал - ткните носом в правильном направлении.
Поиском пользовался, доступа к ИТС пока нет.
80. Serg0FFan (Serg0FFan) 11.05.17 11:49 Сейчас в теме
1) Если использовать обычный способ установки, то вот тут http://s001.radikal.ru/i193/1705/46/9ff53835045d.png в скобочках еще и версию показывает, у вас же её нет (возможно вы так и планировали, но не удобно).
2) Там же на скрине, видно что установлен продукт "1С Предприятие - Работа с файлами", так вот если использовать параметр "all" то данный продукт удаляется, да так, что в списке установленных программ он есть, но ничего с ним сделать нельзя, ни удалить, ни восстановить, ни с нормального дистрибутива что-то сделать с ним.
P.S. Windows 10 RS1 x64 LTSB RUS
81. Dim Dragonim (Dragonim) 85 11.05.17 15:51 Сейчас в теме
(80)
1 Я знаю о таком поведении, но не разбирался в нём, т.к. версия написана справа в соответствующей колонки и мне этого достаточно.
2. О таком возможном поведении скрипта при ключе "all" я догадываюсь, в связи с алгоритмом удаления. Именно по этому в инструкцию, при описании работы ключа "all", изначально были добавлены слова: "Экстенсивными, потому что, удалены будут все продукты на компьютере хотя бы призрачно напоминающие платформу 1С".
82. Дим Дим (demaxxx) 16.09.17 01:46 Сейчас в теме
Dim Dragonim, может быть добавите в скрипт функцию, описанную Evgeny Gerasimov (Fox_sx), а именно
Регистрация comcntr.dll: (не "регилась" автоматом)
Start-Process 'regsvr32.exe' "/s ""$pathdll\1cv8\$ProductVer\bin\comcntr.dll" -Wait -NoNewWindow -PassThru

?jav * ascript:void(0);
83. Сергей Соломатин (user841580) 10.10.17 14:32 Сейчас в теме
Подскажите пожалуйста, в чем может быть проблема?


D:\Users\SysAdmin.ENTERPRISE>"\\Enterprise.Local\Software\Supplementary Distribu
tion\Utilities\1C\Enterprise\Distrib\1C8InstallAndUninstall.bat"

D:\Users\SysAdmin.ENTERPRISE>я╗┐@rem ╨┤╨╗╤П ╨╖╨░╨┐╤Г╤Б╨║╨░ powershell ╤Б╨║╤А╨╕╨┐
╤В╨╛╨▓ ╨╜╨╡╨╛╨▒╤Е╨╛╨┤╨╕╨╝╨╛ ╨┐╨╡╤А╨╡╨╛╨┐╤А╨╡╨┤╨╡╨╗╨╕╤В╤М ╨┐╨╛╨╗╨╕╤В╨╕╨║╤Г ╨▒╨╡╨╖
╨╛╨┐╨░╤Б╨╜╨╛╤Б╤В╨╕ ╨╖╨░╨┐╤Г╤Б╨║╨░ powershell
'я╗┐@rem' is not recognized as an internal or external command,
operable program or batch file.

D:\Users\SysAdmin.ENTERPRISE>start /wait powershell "Set-ExecutionPolicy RemoteS
igned -Force"


D:\Users\SysAdmin.ENTERPRISE>powershell "\\Enterprise.Local\Software\Supplementa
ry Distribution\Utilities\1C\Enterprise\Distrib\1C8InstallAndUn­install.ps1" -dd
'\\Enterprise.Local\Software\Supplementary Distribution\Utilities\1C\Enterprise\
Distrib' -dl '\\Enterprise.Local\Software\Supplementary Distribution\Utilities\1
C\Enterprise\Distrib\1CLogs' -ip 'no' -dp 'all'
*то что ниже,в cmd написано красным*
\\Enterprise.Local\Software\Supplementary : The term
'\\Enterprise.Local\Software\Supplementary' is not recognized as the name of a
cmdlet, function, script file, or operable program. Check the spelling of the
name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ \\Enterprise.Local\Software\Supplementary
Distribution\Utilities\1C\Enterprise\D ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (\\Enterprise.Lo...e\Supplementa
   ry:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException[/B]
Показать


bat файл выглядит у меня так
@rem для запуска powershell скриптов необходимо переопределить политику безопасности запуска powershell
	
start /wait powershell "Set-ExecutionPolicy RemoteSigned -Force"

@rem запускаем скрипт с нужными параметрами
	
powershell "\\Enterprise.Local\Software\Supplementary Distribution\Utilities\1C\Enterprise\Distrib\1C8InstallAndUn­install.ps1" -dd '\\Enterprise.Local\Software\Supplementary Distribution\Utilities\1C\Enterprise\Distrib' -dl '\\Enterprise.Local\Software\Supplementary Distribution\Utilities\1C\Enterprise\Distrib\1CLogs' -ip 'no' -dp 'all' 
@rem возвращяем политику безопасности в значение по умолчанию
	
start /wait powershell "Set-ExecutionPolicy Restricted -Force"
Показать

в ps изменил только
# зададим параметры по умолчанию. Данные параметры можно поменять передав их скрипту перед выполнением
param([string]$dd = "\\Enterprise.Local\Software\Supplementary Distribution\Utilities\1C\Enterprise\Distrib", # путь до каталога с дистрибутивами платфоры 1С 8
      [string]$dl = "\\Enterprise.Local\Software\Supplementary Distribution\Utilities\1C\Enterprise\Distrib\1CLogs", # путь до каталога в который будут записываться логи установки и удаления
84. Сергей Шевченко (demon_infernal) 29 10.10.17 18:17 Сейчас в теме
(83)
Supplementary Distribution
Возможно, пробел в пути "Supplementary Distribution" ? возьмите весь путь в кавычки
85. Dim Dragonim (Dragonim) 85 11.10.17 06:31 Сейчас в теме
(83)

Судя по всему у вас какой-то невидимый знак в начале файла, такое бывает если вы редактировали файл, например, в word.
Попробуйте взять файл bat с github и отредактировать его в Notepad++.
Так же попробуйте удалить все пустые строки и строки с комментариями оставив только строки с командами.
86. Сергей Соломатин (user841580) 23.10.17 16:47 Сейчас в теме
Похоже проблема была в пробеле в пути "Supplementary Distribution", сделал путь без пробелов :)

Теперь пол дня ломаю голову и гугл над командой Set-ExecutionPolicy RemoteSigned -Force, точнее над тем, почему она не проходит, а еще точнее, что надо сделать, что бы она прошла?

Запустил в PS эту команду, он мне ответил следующее:
Set-ExecutionPolicy RemoteSigned -Force
Set-ExecutionPolicy : Windows PowerShell upd ated your execution policy successfully, but the setting is overridden by
a policy defined at a more specific scope.  Due to the override, your shell will retain its current effective
execution policy of Unrestricted. Type "Get-ExecutionPolicy -List" to view your execution policy settings. For more
information please see "Get-Help Set-ExecutionPolicy".
At line:1 char:1
+ Se t-ExecutionPolicy RemoteSigned -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (:) [Set-ExecutionPolicy], SecurityException
    + FullyQualifiedErrorId : ExecutionPolicyOverride,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
Показать

не понимаю, что за "more specific scope"

на всякий случай покажу, что выдает Get-ExecutionPolicy -list
Get-ExecutionPolicy -list

                                          Scope                                             ExecutionPolicy
                                          -----                                             ---------------
                                  MachinePolicy                                                Unrestricted
                                     UserPolicy                                                Unrestricted
                                        Process                                                  Restricted
                                    CurrentUser                                                Unrestricted
                                   LocalMachine                                                RemoteSigned
Показать


Подскажите пожалуйста, что делать?
87. Иван Сухочев (ivansuh) 09.11.17 13:03 Сейчас в теме
Подскажите куда копать!
На пк не установлена 1с!
Ставим через гп!
Вот что в логах!
Параметры запуска скрипта: -dd '\\server01\Software\1C\1CDistr' -dl '\\server05\temp\1CLogs' -dp 'ael' -ip 'last' -iod 'DESIGNERALLCLIENTS=1 THINCLIENT=1 THINCLIENTFILE=1'
2017.11.09 12:28:03 Начало работы скрипта
2017.11.09 12:28:32 Последняя (старшая) платформа 8.3.10.2639 уже установлена.
2017.11.09 12:28:32 Окончание работы скрипта
---------------------------------------------------------------------------------
89. Иван Сухочев (ivansuh) 10.11.17 11:43 Сейчас в теме
(87) С этой проблемой разобрались!
88. Иван Сухочев (ivansuh) 10.11.17 10:55 Сейчас в теме
Подскажите как удалить определенные версии, несколько? как указать dp=?
90. Dim Dragonim (Dragonim) 85 12.11.17 07:08 Сейчас в теме
(88) такого функционала в скрипте не предусмотрено. Можно запустить скрипт несколько раз каждый раз указав какую конкретную версию надо удалить.

Так же вы можете доработать скрипт введя в него необходимый функционал.
91. Ameh (Ameh) 20.03.18 12:18 Сейчас в теме
Добрый день, пользуюсь вашим скриптом, все в порядке.Недавно возник вопрос о необходимости разной установки (удаленка только тонкие клиенты, остальным толстые). Может быть вы в курсе как проверить какие компоненты 1С установлены на машине, и в зависимости от этого формировать ключи для утсановки?
92. Dim Dragonim (Dragonim) 85 22.03.18 10:34 Сейчас в теме
(91) Ни когда не задавался задачей понять какие компоненты платформы установлены на текущем компьютере. Можно посмотреть какие файлы есть в каталоге с конфигурацией 1cv8.exe, 1cv8c.exe, 1cv8s.exe и таким образом понять какие компоненты установлены.

Если всё работает, то какая разница что установлено. При новом обновлении устанавливаешь так чтобы всё необходимое работало, а старое удаляешь. Мне кажется такой подход более продуктивен. Конечно если нет задачи ревизии на текущий момент.
93. Ameh (Ameh) 22.03.18 11:10 Сейчас в теме
(92)
Спасибо за ответ, в принципе уже так и сделал по поиску файлов. Просто задача устанавливать 3 разных набора компонентов, поэтому проще смотреть, что установлено и ставить новую платформу с теми же компонентами.
Оставьте свое сообщение