Скрипт PowerShell для импорта в лес Active Directory и создания файла с пользователями.

Опять понадобилось и НИЧЕГО нет готового Все пишут как забацать контакты с помощью консоли MS Exchange 2007 \ 2010. А вот бывают ситуации - контроллер домена Win2008, а Exchange- 2003. Дурдом, но имеет место быть, что ж делать... И вот требуется создать там примерно 6000 контактов. Просто контакт создать несложно, но вот атрибуты прописать, те которые требуются Exchange для работы с контактами - задача еще та.
Итак, требуется создать кучу почтовых контактов средствами powershell v. 2.0.1.1 с использованием модуля работы с AD. Попытаюсь, как обычно, описать самым простейшим языком, понтяным самому неопытному администратору.

1. Создаем файл в MS Excel с именем contacts_list, сохраем в формате CSV по пути С:\CSV, и именуем в файле столбцы вот так:

Name Mail mailNickname Type proxyAddresses targetAddress

в принципе этих параметров хватает для создания полноценного контакта и Exchange его видит, и может с ним работать, в какой бы папке-OU в вашем AD он у вас не был бы.
Какие конкретно поля в свойствах объекта "контакт" отражают эти столбцы?
Вот разъяснения, типа табличка)))

Параметр столбца - Название в редакторе атрибутов ADSI (пояснение) - Русскоязычное обозначение на свойствах контакта

Name - CN (каноническое имя объекта) - Имя
Mail - Mail (электронная почта) - Эл.почта
mailNickname - mailNickname (алиас Exchange, псевдоним) - отображается только в редакторе атрибутов
Type - ObjectClass (класс (тип) объекта) - отображается только в редакторе атрибутов
proxyAddresses - proxyAddresses (адрес внешней по отношению к домену электропочты в формате SMTP:[email protected]) - отображается только в редакторе атрибутов
targetAddress - targetAddress (адрес внешней по отношению к домену электропочты в формате SMTP:[email protected]) - отображается только в редакторе атрибутов
Заполняем столбцы, например

Name Mail mailNickname Type proxyAddresses targetAddress
Vasiliy Terkin [email protected] Partners_Sales_0001 contact SMTP:[email protected] SMTP:[email protected]

Примечание:
mailNickname должен отображать принадлежность к какой-либо группе рассылки, и лучше, если будет иметь порядковый номер. Встречал глюки, когда все контакты имели одинаковый mailNickname и глюки были неприятные и странные.
proxyAddresses, targetAddress обязаельно должные быть в указанном формате SMTP:[email protected], иначе Exchange не поймет контакта и будет выдавать ошибку о неверном формате.

2. Создаем файл с create_contact и расширением ps1 и копируем туда вот такой код:

Import-CSV -Path "C:\CSV\contacts_list.csv" | ForEach-Object -process {New-ADObject -Path "OU=PostContact,DC=domain,DC=corp,DC=loc al" -Name $_.Name -Type $_.Type -DisplayName $_.Name -OtherAttributes @{"Mail"=$_.mail; "proxyAddresses"=$_.proxyAddresses; "targetAddress"=$_.targetAddress; "mailNickname"=$_.mailNickname}}

Что тут куда? Разберем по кускам:

Import-CSV -Path "C:\CSV\contacts_list.csv" - команда забирает данные из файла расположенного по пути C:\CSV\contacts_list.csv

| ForEach-Object -process { - и передает данные в конвейер обработки, причем каждое значение обрабатывается отдельно в соответствии с именами столбцов

New-ADObject - сам конвейер представляет собой команду создания в AD объекта (справка в powershell по вызову get-help new-adobject - full)

-Path "OU=PostContact,DC=domain,DC=corp,DC=loc al" - путь, по которому будет создан почтовый контакт. Посмотреть его можно открыв AD и щелкнув свойства OU (контейнера) и просмотрев путь во вкладе "Объект" и переделав его в соответствии с форматом в примере. Если этот параметр убрать - контакты создадутся в Users, это путь по умолчанию.

-Name $_.Name -Type $_.Type -DisplayName $_.Name - обязательные параметры (Name и Type) и не очень обязательный -
DisplayName. Их надо создавать понятыми, можно и кириллицей, можно латинскими буквами. Есть ограничение по длине, вроде бы, точно не помню - 64 символа.

-OtherAttributes @{"Mail"=$_.mail; "proxyAddresses"=$_.proxyAddresses; "targetAddress"=$_.targetAddress; "mailNickname"=$_.mailNickname}} - самое важное. Почтовые адреса нельзя передать просто так, как Name и Type. Почтовые адреса это типа otherattributes - дополнительные атрибуты, но их также можно передать из столбцов файла.CSV. Не забывайте проверить все символы и скобки, в конце должно быть 2 скобки.

3. Сохраняем файлы и проверяем пути -C:\CSV - в файле и в реале)))
4. Открываем powershell на контроллере домена (контроллер не должен быть типа ReadOnly!!!), выполняем последовательно 2 команды :

Set-ExecutionPolicy Unrestricted

import-module activedirectory

5. Выполняем C:\CSV\create_contact.ps1
6. Наблюдаем (не забываем сделать рефреш консоли) в OU PostContact новые почтовые контакты.

Ну и напоследок, несколько советов .
- Если у вас полноценная версия powershell, то вызов из нее powershell_ise откроет очень удобный редактор скриптов с возможностью запуска и прочими удобствами.
- Файлы CSV должны быть в кодировке Unicode, если у вас ANSI - будет ошибка.
- Можно добавить еще массу столбцов и, следовательно, атрибутов, к почтовому контакту. Например, некоторым Exchange может потребоваться такой атрибут контакта, как legacyExchangeDN. Узнать его несложно - создаем руками почтовый контакт в АД, смотрим этот параметр во вкладке "Редактор атрибутов" (если этой вкладки нет - включаем ее в консоли вот так: меню Вид \ Дополнительные компоненты). Соответственно к файлу с данными добавляем столбец legacyExchangeDN, заполняем его отредактированным значением, скопированным из только что созданного контакта, а в скрипте после "mailNickname"=$_.mailNickname добавляем
"legacyExchangeDN"=$_.legacyExchangeD N. Не забываем скобки.

авторитет 23 февраля 2014 в 04:47

Скрипт PowerShell для импорта в лес Active Directory и создания файла с пользователями

Сначала установил и настроил WS 2012R2 как DC и после этого встал вопрос как добавлять пользователей в него. Список сотрудников у меня был в xls файле и тогда я решил, чтобы не забивать пользователей вручную, оптимизировать это с помощью PowerShell.

В интернете много примеров, но они мало чем подходили для моего решения, некоторые были кусками кода, другие вовсе не работали с WS2012R2, а третьи добавляли пользователей в определенные каталоги, а мне необходимо было раскидать пользователей в более чем 70 каталогов. Так же встала задача как сделать CSV - файл для PowerShell в соответствии с его стандартами.

В первую очередь необходимо разделить ФИО на разные столбцы и оказалось, что в MS Excel 2013 есть достаточно интересный инструмент для этого под названием «Текст по столбцам» который находится во вкладке ДАННЫЕ.

После этого был принят формат логинов для пользователей и было принято решение, что это будут первые буквы от имени и отчества и после нижнего подчеркивания полностью фамилия (например: aa_petrov). Для этого пришлось транслитерировать их с помощью VB-скрипта.

Скрипт транслит - скрипта для Excel`я

Function Translit(Txt As String) As String Dim Rus As Variant Rus = Array("а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", _ "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", _ "щ", "ъ", "ы", "ь", "э", "ю", "я", "А", "Б", "В", "Г", "Д", "Е", _ "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", _ "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я") Dim Eng As Variant Eng = Array("a", "b", "v", "g", "d", "e", "jo", "zh", "z", "i", "j", _ "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "c", "ch", _ "sh", "sch", "", "y", "", "e", "yu", "ya", "A", "B", "V", "G", "D", _ "E", "Jo", "Zh", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", _ "S", "T", "U", "F", "H", "C", "Ch", "Sh", "Sch", "", "Y", "", "E", "Yu", "Ya") For I = 1 To Len(Txt) с = Mid(Txt, I, 1) flag = 0 For J = 0 To 65 If Rus(J) = с Then outchr = Eng(J) flag = 1 Exit For End If Next J If flag Then outstr = outstr & outchr Else outstr = outstr & с Next I Translit = outstr End Function

А также добавлена функция для генерации данных логинов:

СТРОЧН(ЛЕВСИМВ(Translit(ЛЕВСИМВ(D2)))&ЛЕВСИМВ(Translit(ЛЕВСИМВ(E2)))&"_"&Translit(C2))

Пароли были сгенерированны с помощью фразы и набора случайных символов:

="Habrhabr"&СЛУЧМЕЖДУ(1000;9999)

После этого сохранил файл в.csv с 6 заголовками Login; Password; LastName; FirstName; MiddleName; OU; JobTitle и изменил кодировку файла в Unicode, так как с ANSI часто бывают проблемы.

Затем написал следующий скрипт PS:

Import-Module ActiveDirectory $Users = Import-Csv -Delimiter ";" -Path "C:\Users\Администратор\Desktop\user.csv" $allou = Get-ADOrganizationalUnit -Filter * -SearchBase "OU=Forest,DC=habr,DC=ru" foreach ($User in $Users) { $ou = $allou | Where {$_.Name -eq $User.OU} if ($ou) { $OU = $ou.DistinguishedName } else { $OU = "OU=Others,DC=habr,DC=ru" <#Если каталог с таким именем не найден отправляем в OU other#> } $Password = $User.Password $Detailedname = $User.LastName + " " + $User.FirstName + " " + $User.MiddleName $UserFirstname = $User.FirstName $UserLastName = $User.LastName $JobTitle = $User.JobTitle $SAM= $User.Login + "@habr.ru" New-ADUser -Name $Detailedname -SamAccountName $User.Login -UserPrincipalName $SAM -DisplayName $Detailedname -GivenName $User.FirstName -Surname $User.LastName -Title $JobTitle -AccountPassword (ConvertTo-SecureString -AsPlainText "H@brHabr" -Force) -Enabled $true -Path $OU }

Данный скрипт позволяет раскидать пользователей по своим каталогам, а тех у кого их нет отправить в каталог Other.

Спасибо за внимание.

Теги: powershell, active directory, excel, csv, windows server 2008, windows server 2008 r2, windows server 2012, windows server 2012r2,

авторитет 23 февраля 2014 в 04:47

Скрипт PowerShell для импорта в лес Active Directory и создания файла с пользователями

  • PowerShell ,
  • IT-инфраструктура

Сначала установил и настроил WS 2012R2 как DC и после этого встал вопрос как добавлять пользователей в него. Список сотрудников у меня был в xls файле и тогда я решил, чтобы не забивать пользователей вручную, оптимизировать это с помощью PowerShell.

В интернете много примеров, но они мало чем подходили для моего решения, некоторые были кусками кода, другие вовсе не работали с WS2012R2, а третьи добавляли пользователей в определенные каталоги, а мне необходимо было раскидать пользователей в более чем 70 каталогов. Так же встала задача как сделать CSV - файл для PowerShell в соответствии с его стандартами.

В первую очередь необходимо разделить ФИО на разные столбцы и оказалось, что в MS Excel 2013 есть достаточно интересный инструмент для этого под названием «Текст по столбцам» который находится во вкладке ДАННЫЕ.

После этого был принят формат логинов для пользователей и было принято решение, что это будут первые буквы от имени и отчества и после нижнего подчеркивания полностью фамилия (например: aa_petrov). Для этого пришлось транслитерировать их с помощью VB-скрипта.

Скрипт транслит - скрипта для Excel`я

Function Translit(Txt As String) As String Dim Rus As Variant Rus = Array("а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", _ "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", _ "щ", "ъ", "ы", "ь", "э", "ю", "я", "А", "Б", "В", "Г", "Д", "Е", _ "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", _ "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я") Dim Eng As Variant Eng = Array("a", "b", "v", "g", "d", "e", "jo", "zh", "z", "i", "j", _ "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "c", "ch", _ "sh", "sch", "", "y", "", "e", "yu", "ya", "A", "B", "V", "G", "D", _ "E", "Jo", "Zh", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", _ "S", "T", "U", "F", "H", "C", "Ch", "Sh", "Sch", "", "Y", "", "E", "Yu", "Ya") For I = 1 To Len(Txt) с = Mid(Txt, I, 1) flag = 0 For J = 0 To 65 If Rus(J) = с Then outchr = Eng(J) flag = 1 Exit For End If Next J If flag Then outstr = outstr & outchr Else outstr = outstr & с Next I Translit = outstr End Function

А также добавлена функция для генерации данных логинов:

СТРОЧН(ЛЕВСИМВ(Translit(ЛЕВСИМВ(D2)))&ЛЕВСИМВ(Translit(ЛЕВСИМВ(E2)))&"_"&Translit(C2))

Пароли были сгенерированны с помощью фразы и набора случайных символов:

="Habrhabr"&СЛУЧМЕЖДУ(1000;9999)

После этого сохранил файл в.csv с 6 заголовками Login; Password; LastName; FirstName; MiddleName; OU; JobTitle и изменил кодировку файла в Unicode, так как с ANSI часто бывают проблемы.

Затем написал следующий скрипт PS:

Import-Module ActiveDirectory $Users = Import-Csv -Delimiter ";" -Path "C:\Users\Администратор\Desktop\user.csv" $allou = Get-ADOrganizationalUnit -Filter * -SearchBase "OU=Forest,DC=habr,DC=ru" foreach ($User in $Users) { $ou = $allou | Where {$_.Name -eq $User.OU} if ($ou) { $OU = $ou.DistinguishedName } else { $OU = "OU=Others,DC=habr,DC=ru" <#Если каталог с таким именем не найден отправляем в OU other#> } $Password = $User.Password $Detailedname = $User.LastName + " " + $User.FirstName + " " + $User.MiddleName $UserFirstname = $User.FirstName $UserLastName = $User.LastName $JobTitle = $User.JobTitle $SAM= $User.Login + "@habr.ru" New-ADUser -Name $Detailedname -SamAccountName $User.Login -UserPrincipalName $SAM -DisplayName $Detailedname -GivenName $User.FirstName -Surname $User.LastName -Title $JobTitle -AccountPassword (ConvertTo-SecureString -AsPlainText "H@brHabr" -Force) -Enabled $true -Path $OU }

Данный скрипт позволяет раскидать пользователей по своим каталогам, а тех у кого их нет отправить в каталог Other.

Спасибо за внимание.

Теги: powershell, active directory, excel, csv, windows server 2008, windows server 2008 r2, windows server 2012, windows server 2012r2,

Всем привет. Сегодня я покажу вам как можно автоматизировать добавление пользователей в AcriveDirecotory при помощи скрипта. Данные о пользователе будем брать из CSV файла.

Скачать архив со скриптом можно . В этот же архив я положил установщик.net 4.5 и powershell 5.1 для 2008R2.

Пример моего файла CSV:

ФИО;должность;отдел;номер комнаты;номер телефона;электронная почта;идентификатор
Иванов Иван Иванович;директор;76;345;123; ;00000001
Петрова Ирина Петровна;лаборант;77;367;124; ;00000002
Васильев Василий Васильевич;управляющий;78;389;125; ;00000003
Александров Александ Александрович;зам. Директора;79;411;126; ;00000004
Сергеев Сергеей Сергеевич;лаборант;80;433;127; ;00000005

Соответственно все поля мы будем заносить в AD. ФИО будет разбиваться на фамилию, имя и отчество. Имя пользователя у нас будет формироваться из первой буквы имени и фамилии, переведенных в транслит.

В случае, если имя пользователя уже существует - мы берем 2 буквы из имени и так далее.

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

В случае появления записи с существующим идентификатором - данные о пользователе обновляются.

Так же при запуске нашего скрипта с ключом -del - пользователи, которые присутствуют в CSV файле будут удалены из AD.

Я тестировал работу скрипта на Windows 2008R2 с установленным powershell 5.1, т. е. он должен так же работать и на 2012 и на 2016 виндах.

Для того что бы установить PowerShell 5.1 на 2008R2 - на ней должен быть установлен как минимум первый service pack. А также.net 4.5. (установщик.net и powershell я добавил в архив со скриптом. Скачать SP1 для Windows 2008R2 можно по ссылке ).

Для того что бы powershell дал запусткать скрипт нужно выполнить команду от имени администратора:

Set-ExecutionPolicy bypass

Обратите внимание на переменные в начале скрипта, в них задается путь и имя файла csv, пароль, который будет назначаться пользователям, а так же название домена.

Текст скрипта:

#Написано для сайта https://www.mytechnote.ru #Для работы скрипта нужно обновить powershell, для этого #сперва нужно установить sp1 (https://www.microsoft.com/ru-ru/download/details.aspx?id=5842) #на сервер, если еще не установлен. #Далее.net 4.5 (dotNetFX45_Full_setup) #После чего нужно обновить powershell до версии 5.1 (в powershell запущенном от имени администратора выполняеем Set-ExecutionPolicy bypass, и запускаем скрипт установки из архива powershell51.zip) #при запуске скрипта poweshell длжен быть запущен от имени администратора #при запуске без ключа, будут добаляться и обновляться пользователи #при запуске с ключом -del будут удалться пользователи #################################################################################################################################################################################################### import-module activedirectory #переменные: #путь до CSV файла $pathToCSV=".\f_151592b94af8a58e.csv" #пароль который будет задан новым пользователям $defpass="As12345^" #указываем наш домен $domain="@test.loc" #функция транслитерации function global:Translit { param($inString) $Translit = @{ "а" = "a" "А" = "a" "б" = "b" "Б" = "b" "в" = "v" "В" = "v" "г" = "g" "Г" = "g" "д" = "d" "Д" = "d" "е" = "e" "Е" = "e" "ё" = "yo" "Ё" = "eo" "ж" = "zh" "Ж" = "zh" "з" = "z" "З" = "z" "и" = "i" "И" = "i" "й" = "j" "Й" = "j" "к" = "k" "К" = "k" "л" = "l" "Л" = "l" "м" = "m" "М" = "m" "н" = "n" "Н" = "n" "о" = "o" "О" = "o" "п" = "p" "П" = "p" "р" = "r" "Р" = "r" "с" = "s" "С" = "s" "т" = "t" "Т" = "t" "у" = "u" "У" = "u" "ф" = "f" "Ф" = "f" "х" = "h" "Х" = "h" "ц" = "ts" "Ц" = "ts" "ч" = "ch" "Ч" = "ch" "ш" = "sh" "Ш" = "sh" "щ" = "sch" "Щ" = "sch" "ъ" = "" "Ъ" = "" "ы" = "y" "Ы" = "y" "ь" = "" "Ь" = "" "э" = "e" "Э" = "e" "ю" = "yu" "Ю" = "yu" "я" = "ya" "Я" = "ya" } $outCHR="" foreach ($CHR in $inCHR = $inString.ToCharArray()) { if ($Translit[$CHR] -cne $Null) {$outCHR += $Translit[$CHR]} else {$outCHR += $CHR} } Write-Output $outCHR} #импортируем csv файл в переменную $csv=import-Csv $pathToCSV -Encoding OEM -Delimiter ";" #разбираем переменную foreach ($user in $csv) { #заносим в переменные значения из csv файла $fio="$($user.ФИО)" $surname=$fio.split(" ") $name=$fio.split(" ") $sname=$fio.split(" ") $dolzhnost="$($user.должность)" $depart="$($user.отдел)" $room="$($user."номер комнаты")" $phone="$($user."номер телефона")" $mail="$($user."электронная почта")" $id=$($user."идентификатор") #переводим в транслит имя и фамилию $transName=Translit($name) $transSurname=Translit($surname) #отчищаем первые буквы имени $shortName="" #добаляем буквы к переменной shortname (переменная для создания логина) for ($i=1; $i -lt $transName.length; $i++) { #в зависимости от числа проходов цикла, добавляем i букв $shortName=$transName.substring(0,$i) #добавляем буквы имени к фамилии $userName=$shortName+$transSurname try { #проеряем, есть ли пользователь $user=Get-ADUser "$userName" } catch { $user=$false } #если пользователь существует if ($user) { #получаем id из AD $IDinAD=Get-ADUser $userName -Properties comment | select comment | ft -HideTableHeaders | out-string #если номер страхового из AD совпал с номером из csv if ($IDinAD -match $id) { #если запутили скрипт без аргументов if ($args -eq "" -or !$args) { #обновляем данные пользователя Set-ADUser -Identity "$userName" -Surname "$surname" -DisplayName "$surname $name $sname" ` -OfficePhone "$phone" -EmailAddress "$mail" -Department "$depart" -Title "$dolzhnost" ` -UserPrincipalName "$userName$domain" -GivenName "$name" -Office "$room" -enabled $true -SamAccountName "$userName" #прерываем цикл break } #если запустили скрипт с аргументом -del if ($args -eq "-del") { #удаляем пользователя Remove-ADUser -Identity $userName -Confirm:$false } } #если id не совпадают, и найдено имя пользователя, идем к следующему шагу цикла else { } } #если пользователя не существует else { #и запустили без аргументов if ($args -eq "" -or !$args) { try { $users=get-aduser -Filter "*" -Properties comment | select comment, name } catch { $users=$false } if ($users) { foreach ($user in $users) { #если у какого то пользователя есть id из csv, обновляем его if ($user.comment -match $id) { $uname=$user.name.toString() $distName=Get-ADObject -Filter "name -eq $uname" Set-ADUser -Identity "$uname" -Surname "$surname" -DisplayName "$surname $name $sname" ` -OfficePhone "$phone" -EmailAddress "$mail" -Department "$depart" -Title "$dolzhnost" ` -UserPrincipalName "$userName$domain" -GivenName "$name" -Office "$room" -enabled $true ` -SamAccountName "$userName" Rename-ADObject $distName.DistinguishedName -NewName $userName } } } try { #добавляем пользователя и прерываем цикл New-ADUser -Name "$userName" -Surname "$surname" -DisplayName "$surname $name $sname" ` -OfficePhone "$phone" -EmailAddress "$mail" -Department "$depart" -Title "$dolzhnost" ` -UserPrincipalName "$userName$domain" -GivenName "$name" -Office "$room" -OtherAttributes @{comment="$id"} ` -AccountPassword (ConvertTo-SecureString -AsPlainText "$defpass" -force) -enabled $true ` -ChangePasswordAtLogon $true -SamAccountName "$userName" -erroraction "silentlycontinue" } catch { } break } } } }

Как известно, одним из способов массового импорта пользователей является импорт пользователей из каталога Active Directory. Однако, на такой вариант импорта накладываются некоторые ограничения:

  1. Невозможно вторично импортировать данные по существующим в системе пользователям.
  2. Невозможно запускать компоненту импорта через командную строку в автономном режиме.
  3. Нет возможности импортировать дополнительную информацию об учетной записи из каталога Active Directory (загружается только информация необходимая для генерации пользователя).

При очередном внедрении системы, заказчик поставил жесткие требования на импорт пользователей из каталога:

  1. Должна быть возможность многократного импорта данных по существующим пользователям с целью обновления информации по данным пользователям (отключение учетной записи, загрузка сертификатов, группы пользователя и пр.)
  2. Импорт пользовательских групп с типами Organization Units и Universal Groups с учетом иерархии в Active Directory. Обновление информации по вхождению пользователя в ту или иную группу.
  3. Импорт пользовательских сертификатов.
  4. Автоматическое связывание учетной записи пользователя с существующей записью справочника Работники .
  5. Импорт E-mail адреса пользователя (в последствии использовался для рассылки уведомлений о новых заданиях).
  6. Закрытие учетной записи пользователя системы DIRECTUM, в случае отключения ее в каталоге Active Directory.
  7. Работа автономном режиме через командную строку по назначенным заданиям.

В результате работы было разработано решение в виде сценария, отвечающего данным требованиям. Из основного функционала сценария можно отметить следующее:

  • Импорт учетной записи пользователя. Импортируется логин пользователя и полное имя.
  • Импорт пользовательских групп. Импортируются группы пользователя в которые входит учетная запись каталога (импортируются группы с типом Organization Unit и Universal Groups). При этом учитывается иерархия каталогов домена.
  • Импорт пользовательских сертификатов. Импортируются действующие сертификаты учетных записей каталога и сертификаты, срок действия которых еще не наступил, предназначенных для подписания и шифрования.
  • Удаление/закрытие учетной записи. Удаление логина пользователя и закрытие записи справочника Пользователи при отключении учетной записи каталога.
  • Привязка учетной записи к работнику. Учетная запись пользователя привязывается к записи справочника Работники, для которой совпадает значение реквизита Фамилия И.О. с полным именем учетной записи каталога.
  • Импорт адреса E- mail. Если для учетной записи импортированного пользователя была привязана к записи Работники, то для соответствующей записи справочника Персоны записывается пользовательский адрес электронной почты.

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

Ну и для наглядности, приведу пример визуальной работы сценария.

Итак, запустив сценарий, настраиваем параметры импорта и жмем ОК :

На следующем шаге выбираем импортируемых пользователей пользователей. Переносим нужных пользователей из левой колонки в правую и жмем кнопку ОК :

После того, как пользователи импортируются видим сообщение об окончании работы сценария:

О том какие действия были произведены с учетными записями можем посмотреть в логе импорта.

Платформа разработки: DIRECTUM 4.6.1.
Пакет разработки и тех. описание:
Исправленная функция к сценарию: