Pull to refresh

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

PowerShell*System administration*
Awaiting invitation
Доброго времени суток всем!
По ходу внедрения новых сервисов появилась необходимость модифицировать учетные данные 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С, об этом обязательно будет пост.
Tags:powershellactive directory
Hubs:PowerShellSystem administration
You can’t comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.