файл который надо положить в %appdata%\1c\1cestart
\\corp.org.ru\1c\cfg\1cestart.cfg
файл в котором перечислены все ИБ
\\corp.dom.ru\1c\cfg\1cescmn.cfg
CommonInfoBases=\\corp.dom.ru\1c\v8i\org-buh-arc-20180831.v8i
CommonInfoBases=\\corp.dom.ru\1c\v8i\org-buh.v8i
CommonInfoBases=\\corp.dom.ru\1c\v8i\org-doc.v8i
CommonInfoBases=\\corp.dom.ru\1c\v8i\org-zup-arc-20180702.v8i
CommonInfoBases=\\corp.dom.ru\1c\v8i\org-zup.v8i
файл с информацией для генерации файлов v8i
\\corp.dom.ru\1c\cfg\v8i_utf8.csv
IB;SRV;IBFN;ORG;CONF;Prod;Description
org-buh-arc-20180831;org-v-1c;Организация Бух Архив 20180831;Организация;Бух;Архив;20180831
org-buh;org-v-1c;Организация Бух;Организация;Бух;;
org-doc;org-v-1c;Организация СЭД;Организация;СЭД;;
org-zup-arc-20180702;org-v-1c;Организация ЗУП Архив 20180702;Организация;ЗУП;Архив;20180702org-zup;org-v-1c;АТИС ЗУП;АТИС;ЗУП;;
скрипт который генерит файлы v8i. группы в АД, назначает соответствующие разрешения
1c_v8igen.ps1#$VerbosePreference = "Continue"
$IBListCSV = "\\corp.dom.ru\1c\cfg\v8i_utf8.csv"
$v8iPath = "\\corp.dom.ru\1c\v8i"
$1CECmn = "\\corp.dom.ru\1c\cfg\1CESCmn.cfg"
$CsvEncoding = "utf8"
Write-Verbose -message "$IBListCSV"
Write-Verbose -message "$v8iPath"
$OUPath = "ou=v8i,ou=1c,ou=Группы доступа,dc=corp,dc=org,dc=ru"
$Template = '[%IBFN%]
Connect=Srvr="%SRV%";Ref="%IB%";
Folder=/
External=0
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.3
AppArch=x86
'
Write-Verbose -message "ActiveDirectory module check "
if (Get-Module -ListAvailable -Name ActiveDirectory) {
Write-Verbose -message "ActiveDirectory module installed"
}
else {
Write-Host "ActiveDirectory module not installed try"
Write-Host "Install-WindowsFeature -Name ""RSAT-AD-PowerShell"" -IncludeAllSubFeature"
exit
}
$IBList = Import-Csv -Path "$IBListCSV" -Encoding $CsvEncoding -Delimiter ";"
$v8iAll = "$($v8iPath)\_All.v8i"
Out-File -Encoding utf8 -FilePath "$v8iAll"
Out-File -Encoding utf8 -FilePath "$1CECmn"
ForEach ($IB in $IBList) {
Write-Verbose -message $IB.IBFN
$NewTemplate = $Template -replace "%IBFN%", $IB.IBFN
Write-Verbose -message $IB.SRV
$NewTemplate = $NewTemplate -replace "%SRV%", $IB.SRV
Write-Verbose -message $IB.IB
$NewTemplate = $NewTemplate -replace "%IB%", $IB.IB
Write-Verbose -message "$v8i"
$v8i = "$($v8iPath)\$($IB.IB).v8i"
$NewTemplate | Out-File -Encoding utf8 -FilePath $v8i
$NewTemplate | Out-File -Append -Encoding utf8 -FilePath $v8iAll
"CommonInfoBases=$v8i" | Out-File -Append -Encoding utf8 -FilePath $1CECmn
$GroupName = "DL_v8i_$($IB.IB)_RO"
Write-Verbose -message "$chekGroup"
if ( $(Get-ADGroup -LDAPFilter "(sAMAccountName=$GroupName)") -eq $null ) {
Write-Verbose -message "Create $GroupName"
New-ADGroup -Name $GroupName -Path $OUPath -GroupScope Global -GroupCategory Security
}
Write-Verbose -message "Update $GroupName"
Set-ADGroup -Identity $GroupName -Replace @{
info="Path=$v8i; aclType=Read"
Description = "$($IB.IBFN)"
}
Write-Verbose -message "$GroupName addMember DL_v8i_all"
Add-ADGroupMember -Identity $GroupName -Members DL_v8i_all
Write-Verbose -message "DL_1c_list addMember $GroupName"
Add-ADGroupMember -Identity DL_1c_list -Members $GroupName
Write-Verbose -message "Get-ACL $v8i"
$acl = Get-Acl -Path $v8i
Write-Verbose -message "Setup Permissions"
$permission = "MLG\$GroupName", 'Read', 'Allow'
Write-Verbose -message "Setup Rule"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($permission)
Write-Verbose -message "Setup Acl"
$acl.SetAccessRule($rule)
Write-Verbose -message "Save Acl to $v8i"
$acl | Set-Acl -Path $v8i
}
Что проиcходит?
Скрипт читает CSV
(IB - берёт из колонки IB csv файла)
Создаёт файл IB.v8i
Создаёт группу в АД с именем DL_v8i_IB_read
Назначает этой группе разрешение read на файл v8i
Добавляет группу в другие группы.
Осталось создать GPO которое будет заменять файл %appdata%\1c\1cestart\1cestart.cfg файлом \\corp.org.ru\1c\cfg\1cestart.cfg
Ратнер Арсений, arsenyratner@gmail.com, 7 985 273 2090