PowerShell. Создание пользователя AD
/ Просмотров: 1387

Вводные данные.
- Заполняем веб-форму с данными нового пользователя.
- Формируем csv файл с данными нового пользователя.
- PowerShell скриптом создаем пользователя, создаем для него домашнюю директорию и устанавливаем на нее необходимые права.
Веб-форму рассматривать пока не будем. Для PowerShell необходимо установить дополнение для работы с AD.
На выходе выб-формы - csv файл примерно такого содержания:
SamAccountName,UserPassword,FirstName,LastName,MName,PhoneNumber,Company,Department,Title TestovTT,cmhfrv,Тест,Тестов,Тестович,1-11,Сибдур,АСУ,Оператор ЭВМ
Запускается скрипт из консоли PS следующей командой:
[PS] C:\scripts>.\useradd.ps1 .\TestovTT.csv
где TestovTT.csv - вышеописанный csv файл.
Ну и сам скрипт:
# считываем имя csv файла из параметра коммандной строки
param ($userCSV)
# в цикле проходим по всем строкам с данными csv файла
Import-Csv -path $userCSV | %{
# считываем данные из текущей строки csv файла в переменные
$Name = $_.'LastName' + ' ' + $_.'FirstName' + ' ' + $_.'MName'
$UserPrincipalName = $_.'SamAccountName' + '@tomskmills.ru'
$HomeDirectory = '\\SERVER-003\personals\' + $_.'SamAccountName'
$FullName = 'MYDOMAIN\' + $_.'SamAccountName'
$PhoneNumber = $_.'PhoneNumber'
$SMTPUserName = $_.'SMTPUserName'
$Company = $_.'Company'
$Department = $_.'Department'
$Title = $_.'Title'
# Путь к файлу для автонастройки ThunderBird
$TBConfigFileName = "\\SERVER-002\d$\wwwroot\tbsettings\" + $_.'SamAccountName' + ".cfg"
# Выводим полученные переменные
echo $_.'SamAccountName'
echo $_.'UserPassword'
echo $_.'FirstName'
echo $_.'LastName'
echo $_.'MName'
echo $_.'PhoneNumber'
echo $Name
echo $UserPrincipalName
echo $HomeDirectory
echo $FullName
echo $PhoneNumber
echo $SMTPUserName
echo $Company
echo $Department
echo $Title
# Создаем пользователя
New-QADuser `
-Name $Name `
-DisplayName $Name `
-FirstName $_.'FirstName' `
-LastName $_.'LastName' `
-SamAccountName $_.'SamAccountName' `
-UserPassword $_.'UserPassword' `
-UserPrincipalName $UserPrincipalName `
-Description $Name `
-mail $UserPrincipalName `
-ParentContainer "tomskmills.ru/main/users" `
-HomeDirectory $HomeDirectory `
-telephoneNumber $PhoneNumber `
-company $Company `
-department $Department `
-title $Title `
-HomeDrive "L:"
# Джем 15 сек., чтобы убедиться что все хорошо/плохо
sleep -s 15
# Создаем личную директорию пользователя
md $HomeDirectory
# Устанавливаем права на личную директорию пользователя
$acl = Get-Acl $HomeDirectory
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($FullName,"DeleteSubdirectoriesAndFiles, Modify, Synchronize", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.SetAccessRule($AccessRule)
$acl | Set-Acl $HomeDirectory
# удаляем из списка пользователей директории админа создавшего директорию
$aclD = Get-Acl $HomeDirectory
$users = New-Object System.Security.Principal.Ntaccount ("MYDOMAIN\PupkinVVadm")
$aclD.PurgeAccessRules($users)
$aclD | Set-Acl $HomeDirectory
# удаляем из списка пользователей "Всех"
$aclD2 = Get-Acl $HomeDirectory
$users = New-Object System.Security.Principal.Ntaccount ("Все")
$aclD2.PurgeAccessRules($users)
$aclD2 | Set-Acl $HomeDirectory
# Заполняем файл автонастройки ThunderBird.
# Получаем дефолтный файл настроек и меняем в нем макрос в фигурных скобках на данные пользователя.
$file = Get-Content "\\SERVER-002\d$\wwwroot\tbsettings\default.cfg" -Encoding UTF8
$file = $file.replace("{smtpusername}", $SMTPUserName)
$file = $file.replace("{userfullname}", $Name)
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False)
[System.IO.File]::WriteAllLines($TBConfigFileName, $file, $Utf8NoBomEncoding)
} # цыкл считывания строк из входного CSV файла