Установка 1С, копирование файла ibases.v8i через SCCM

Задача:

Требуется автоматизировать установку 1С и прописать базу.

1.Имеем дистрибутив 1С версии 8.3.6.2332, с ним проблемы нету тихая установка выполняется через setup.exe /s. Создаем application в SCCM. Кстати если на ПК прилетели обновления и он в ожидании перезагрузки при установки получим окно, а в логе  c:\windows\ccm\logs\appenforce.log будет фигурировать ошибка 1603, имейте это в виду.

2. Создать Application в SCCM,в качестве Detection Method выбран PowerShell.

Опишем как в нашем случае работает Detection Method:

  • Прежде всего заходим в консоль SCCM – Administration – Client Setting и проверяем настройку Computer Agent – Poweshell Execution Policy она должна быть ByPass
  • В зависимости от результата выполнения PowerShell скрипта, SCCM определить есть ли файл в папке или нет. Главное для нас, что мы получаем на выходе,после выполнения PowerShell скрипта (вот ссылка на статью, где про это можно почитать):

Скрипт выглядит следующим образом

 

cd $env:Appdata
$dir = test-path .\1C\1CEStart

#Проверяем наличие папки .\1С\1CEStart,если папка

if ($dir -eq $true)
{
$tset = test-path .\1C\1CEStart\ibases.v8i
if ($tset -eq $true)
{
$a = Get-Content .\1C\1CEStart\ibases.v8i
$b = $a -contains ‘Connect=Srvr=”server1c”;Ref=”documents”;’
if ($tset -eq $true -and $b -eq $true)
{
Write-Host “Installed”
exit 0
}
}
else
{
exit 0
}
}

elseif ($dir -eq $false)
{
exit 0
}

Как мы видим 0 – файл отсутствует. В нашем случае : нет папки 1СEstart и в файле нет строки Connect=Srvr=”server1c”;Ref=”documents”.

Что делает Application:

  • Прежде всего установку базы назначаем – For Users
  • во первых,он имеет зависимость от 1C,прежде чем копировать файл ibases.v8i,ставим 1C.
  • После установки 1С, папка \1C\1CEStart не создается в профиле пользователя,для этого нужно хотя бы один раз запустить 1С,мы поступаем иначе, создаем папку через строку

md %appdata%\1C\1CEStart

и копируем файл в созданную папку в профиле пользователя

xcopy \\sccm\source$\tmp\1CBases\ibases.v8i %APPDATA%\1C\1CEStart /y

Где %appdata% – это alias для C:\Users\user\AppData\Roaming

28/03/16

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

cd $env:Appdata
$dir = test-path .\1C\1CEStart
$file = test-path .\1C\1CEStart\ibases.v8i
if ($dir -eq $false -and $file -eq $false)
{
#New-Item .\1C\1CEStart -ItemType ‘Directory’
#Copy-Item \\server\source$\tmp\1CBases\ibases.v8i -Destination .\1C\1CEStart\
exit 0
}
elseif ($dir -eq $true -and $file -eq $true)
{
$a = (Get-Content .\1C\1CEStart\ibases.v8i) -contains ‘Connect=Srvr=”1c”;Ref=”documents”;’
if ($a -eq $true)
{Write-Host ‘Installed’
exit 0
}
else
{
$base = Get-Content ‘\\server\source$\tmp\1CBases\ibases.v8i’
Write-Output “`n” | out-file .\1C\1CEStart\ibases.v8i -append -Encoding utf8
$base | out-file .\1C\1CEStart\ibases.v8i -append -Encoding utf8
Write-Host ‘Info about base,was added’
exit 0
}
}

Надеюсь статья будет кому нибудь полезна.

 

Advertisements

About alexandrelizarov

SCCM,MDT and Powershell learner.
This entry was posted in powershell, SCCM and tagged , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s