PowerShell. Создание пользователя AD

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

Вводные данные.

  1. Заполняем веб-форму с данными нового пользователя.
  2. Формируем csv файл с данными нового пользователя.
  3. 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 файла