Переименование пользователя AD и изменение домашней папки PowerShell

Доброго времени суток всем!
По ходу внедрения новых сервисов появилась необходимость модифицировать учетные данные AD, пользователей в лесу порядка 500, поэтому для этих целей необходим исключительно PowerShell.
А именно задача была сделать следующее:
Было: Имя: Иван Иванович; Фамилия: Иванов
Надо: Имя: Иван; Фамилия: Иванов; Отчество: Иван. (4 первых символа отчества + ".")
А так же за одно, необходимо создать каждому пользователю домашнюю папку и дать ему туда полные права.

Для решения первой задачи в итоге написан следующий скрипт:

Import-Module ActiveDirectory
#Получаем в переменную $Users пользователей для которых необходимо провести модификацию 
$Users = Get-ADUser -Filter * -Server tul-dc01.pol.corp.kuzholding.ru -SearchBase "OU=users,"DC=corp,DC=domen,DC=ru"
foreach ($User in $Users) {
# Складываем каждый необходимый параметр в переменную
$UserName = $User.GivenName
$UserSAM = $User.sAMAccountName
$UserSurn = $User.Surname
#Если существует в имени пробел
if ($UserName.Contains(" ")){
#Удалить то что после пробела и поместить в $GUserName
$GUserName = $UserName -replace " \D*"
#Поместить в $IUserName 4 символа после пробела и поставить точку.
$IUserName = ($UserName -replace "\D* ").Substring(0,4) + "."
#Изменить имя, фамилию и инициалы
Set-ADUser -Server dc01.corp.domen.ru -Identity $UserSAM -GivenName $GUserName -Initials $IUserName -DisplayName $UserSurn" "$GUserName
#Переименовать обьект AD
Rename-ADObject -Server dc01.corp.domen.ru -Identity $User -NewName $UserSurn' '$GUserName
}}

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

Добавляем домашнюю папку следующим скриптом
:
Import-Module ActiveDirectory
#Указываем общий сетевой ресурс
$Dir = "\\file.corp.domen.ru\common\"
#Получаем в переменную $Users пользователей для которых необходимо провести модификацию 
$Users = Get-ADUser -Filter * -SearchBase "OU=users,"DC=corp,DC=domen,DC=ru" -Server dc01.corp.domen.ru
#Указываем имя домена
$Domen = "corp\"
foreach ($User in $Users) {
# Складываем каждый необходимый параметр в переменную
    $User = $User.sAMAccountName
#Создаем директорию с именем пользователя
    $Path = New-Item -ItemType Directory -Path $Dir -Name $User
#Устанавливаем права на папку
    $ACL = Get-Acl $Path
    $Settings = "$Domen$User","Modify, Synchronize, FullControl", "ContainerInherit, ObjectInherit", "None", "Allow"
    $AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule $Settings
    $ACL.SetAccessRule($AccessRule)
    Set-Acl -Path $Path -AclObject $ACL
#Применяем все изменения на пользователей
    Set-ADUser -Identity $User -HomeDrive "M:" -HomeDirectory "$Path" -Server dc01.corp.domen.ru
        }

В общем вот пару небольших скриптиков, может кому пригодится. В ближайшее время планируется создание пользователи в AD путем импорта данных из базы данных сотрудников в 1С, об этом обязательно будет пост.
Теги:
powershell, active directory

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Похожие публикации