По ходу внедрения новых сервисов появилась необходимость модифицировать учетные данные 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
}