0. Dragonim 88 01.09.14 07:57 Сейчас в теме

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

Существует множество способов установки и обновления платформы 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. Dragonim 88 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. Dragonim 88 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. Dragonim 88 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. Dragonim 88 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. Dragonim 88 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. Dragonim 88 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. Dragonim 88 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. Dragonim 88 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. Dragonim 88 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. Dragonim 88 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. Dragonim 88 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. Dragonim 88 15.01.15 11:22 Сейчас в теме
(35)
Скрипт устанавливается не во время логирования пользователя, а после включения компьютера. Попробуйте включить компьютер без входа под конкретного пользователя, через некоторое время скрипт отработает.

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

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

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

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

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

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

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


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

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


Я с большим удовольствием прочту вашу статью об автоматизации процесса установки/удаления/обновления платформы 1С в АД.
45. EugeneBespalov 19.01.15 09:10 Сейчас в теме
(42) эта статья есть, она не моя, с нее я и пришел на вашу статью.
39. blackhole321 760 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 760 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 23 29.01.15 08:29 Сейчас в теме
Установил PowerShell 3.0.

Вылетает ошибка: не удается индексировать в объект типа system.string
47. DEG156 23 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. Dragonim 88 29.01.15 17:50 Сейчас в теме
(47)

Не могу ответить на ваш вопрос, т.к. у меня в файлах это далеко не 218 строка.
49. DEG156 23 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 23 29.01.15 17:57 Сейчас в теме
Переменная $Arr возвращает "8.2.19.121"
51. Dragonim 88 29.01.15 21:28 Сейчас в теме
(50)

В переменной $Arr должен находиться массив скопированный из переменной $AllPlatforms. Проверьте что возвращается в переменной $Arr[0].и $AllPlatforms[0].
52. 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. Dragonim 88 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 30 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. Dragonim 88 08.12.15 06:59 Сейчас в теме
Скрипт обновлён. Все подробности в нижней части поста.
61. Liks 10.01.16 23:01 Сейчас в теме
dp Может принимать несколько значений? через запятую?
62. Dragonim 88 11.01.16 11:37 Сейчас в теме
(61) Liks, Нет
Можно запустить скрипт несколько раз указав ip='no', а dp такое какое хотите
63. Burninf 21.01.16 12:09 Сейчас в теме
Не очень понятно - при установке уровня безопасности RemoteSigned WinXP требует подписи скрипта, если скрипт находится в сети. Локально же выполняется нормально. Тогда как его запускать из сетевого каталога по этому руководству, если оттуда он наотрез отказывается выполняться?
64. Dragonim 88 21.01.16 22:35 Сейчас в теме
(63) Burninf, сочувствую
Могу лишь посоветовать изменить bat файл. Сначала скопировать файл скрипта на локальный компьютер (команда copy), выполнить скрипт с локального диска, удалить файл скрипта (команда del).
65. incol 19.02.16 16:03 Сейчас в теме
при запуске скрипта вообще ничего не происходит , локально , политику безопасности снимаю вручную и запускаю скрипт , отрабатывает закрывается без ошибок....
66. Dragonim 88 19.02.16 17:48 Сейчас в теме
(65) incol, надо смотреть что пишится в логах
67. 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. Dragonim 88 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 482 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 1386 23.11.16 21:47 Сейчас в теме
С автоматным обновлением серверной части 64 бит кто-нибудь заморачивался?
Как устанавливаете com компоненту? Как конфиги веб-серверов исправляете под новую версию?
72. vshish 108 24.11.16 08:43 Сейчас в теме
Почитал. Очень интересный скрипт. Попробую, но у меня вопрос-идея. Если надо установить только тонкий клиент и есть дистрибутив тонкого клиента, то установку производить с каталога дистрибутива тонкого клиента. (все дело в размерах дистрибутивов)
пысы. Хотя конечно можно и не заморачиваться, а создавать два набора папок дистрибутивов. (для тонкого и толстого клиента)
73. Dragonim 88 25.11.16 14:23 Сейчас в теме
(72) Я проверил. Установка тонкого клиента проходит без проблем. В скрипт добавлена проверка на невозможность установки тонкого 64 битного клиента на 32 битную платформу.
74. 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. Dragonim 88 09.01.17 18:24 Сейчас в теме
(75) Судя по ошибки у вас не хватает прав на установку в первом случае, а во втором случае вы производите запуск от имени администратора. У вас стоит установка скрипта при загрузки компьютера или при входе пользователя? Т.е. logon или startup.
77. NixonRu 09.01.17 20:11 Сейчас в теме
(76)
конфигурация компьютера
автозагрузка

78. 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. user643327_infostart 25.01.17 13:06 Сейчас в теме
Если не туда написал - ткните носом в правильном направлении.
Поиском пользовался, доступа к ИТС пока нет.
80. 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. Dragonim 88 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 30 10.10.17 18:17 Сейчас в теме
(83)
Supplementary Distribution
Возможно, пробел в пути "Supplementary Distribution" ? возьмите весь путь в кавычки
85. Dragonim 88 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. Dragonim 88 12.11.17 07:08 Сейчас в теме
(88) такого функционала в скрипте не предусмотрено. Можно запустить скрипт несколько раз каждый раз указав какую конкретную версию надо удалить.

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

Если всё работает, то какая разница что установлено. При новом обновлении устанавливаешь так чтобы всё необходимое работало, а старое удаляешь. Мне кажется такой подход более продуктивен. Конечно если нет задачи ревизии на текущий момент.
93. Ameh 22.03.18 11:10 Сейчас в теме
(92)
Спасибо за ответ, в принципе уже так и сделал по поиску файлов. Просто задача устанавливать 3 разных набора компонентов, поэтому проще смотреть, что установлено и ставить новую платформу с теми же компонентами.
94. Vovan58 7 14.06.18 11:58 Сейчас в теме
Почему-то на компьютерах с Win 10 не проходит запуск скрипта, точнее только один раз. В Win 7 - все в порядке. В чем может быть засада?
95. Vovan58 7 14.06.18 12:04 Сейчас в теме
Прикол, через неделю на одном Win 10 запустился, на другом - нет... А так вроде все по схеме делал...
96. METAL 92 04.09.18 16:36 Сейчас в теме
Спасибо за разработку! Но никак не взлетает.. ((
В чём может быть проблема? См.скриншот
Даёт ошибку: "File D:\CMDInstall\1C8InstallAndUninstall.ps1 cannot be loaded. The file D:\CMDInstall\1C8InstallAndUninstall.ps1 is not digitally signed. The script will not execute on the system. Please see "get-help about_signing" for more details.."
Прикрепленные файлы:
97. Dragonim 88 05.09.18 08:42 Сейчас в теме
(96) Попробуйте поменять в bat файле часть строки
@start /wait powershell "Set-ExecutionPolicy RemoteSigned -Force"
Смените RemoteSigned на Bypass
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Удаленный консультант-разработчик 1С
Краснодар
зарплата от 60 000 руб. до 60 000 руб.
Полный день



Ведущий программист 1С
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день

Руководитель проектов 1С
Москва
Полный день