# Имя модуля: ADDS-Domain-Controller.ps1 (Add Domain Services on windows server 2008R2)
# Создан: 29 апреля 2011 год.
# Описание: Добавление доменных служб на windows Server 2008 R2 с
# созданием дочерних OU, груп безопасности и пользователей в них. Наименование OU, SecurityGroup берется из поля OU
# Предвариетельные действия: Для успешного выполнения скрипта запускаем из командной строки PowerShell
# Set-ExecutionPolicy RemoteSigned -force с правами Администратора или
# Set-ExecutionPolicy unrestricted -force с правами Администратора
#
# Формат входного csv в кодовой странице UTF-8:
# Name,SamAccountName,UserPrincipalName,GivenName,Surname,DisplayName,OU,Department,Title,Office,OfficePhone
# "Евдокимов Михаил Борисович","EvdokimovM","EvdokimovM","Михаил","Евдокимов","Евдокимов Михаил Борисович","АУП","Аппарат управления","Председатель КСП","509","285-682"
#
#
#Объявляем переменные
$Password = "P@ssw0rd"
$ADForestPrep = Get-ADForest
$ADRootDSEPrep = Get-ADRootDSE
$ADForestSfx = "@" + $ADForestPrep.name
$ADRootDSEName = $ADRootDSEPrep.defaultNamingContext
$UsrDB = Import-Csv "C:\KSP scripts\Users.csv" | select Name, SamAccountName, UserPrincipalName, GivenName, Surname, DisplayName,OU,Department,Title,Office,OfficePhone -unique
$OuDB = Import-Csv "C:\KSP scripts\Users.csv" | select OU -unique
$GroupDB = Import-Csv "C:\KSP scripts\Users.csv" | select OU -unique
<#
# Добавляем роль доменных служб
Add-WindowsFeature –Name ADDS-Domain-Controller –IncludeAllSubFeature
#Повышаем сервер до уровня контроллера домена
Dcpromo /unattend /InstallDNS:Yes /dnsOnNetwork:Yes /ReplicaOrNewDomain:Domain /NewDomain:Forest /NewDomainDNSName:ksp.local /DomainNetBiosName:ksp /DatabasePath:"C:\Windows\NTDS" /LogPath:"C:\Windows\NTDS" /SysvolPath:"C:\Windows\SYSVOL” /safeModeAdminPassword:P@ssw0rd /ForestLevel:4 /DomainLevel:4 /RebootOnCompletion:No
#>
Function Add-OU {
process {
New-ADOrganizationalUnit -Name $_.OU -Path $ADRootDSEName
Write-host "Added OU $($_.OU)" -ForegroundColor Green}
}
function Add-User {
process {
New-ADUser -name $_.Name -SamAccountName $_.SamAccountName -UserPrincipalName "$($_.UserPrincipalName + $AdForestSfx)" -GivenName $_.GivenName -Surname $_.Surname -DisplayName $_.DisplayName -Path "OU=$($_.OU),$($ADRootDSEName)" -Department $_.Department -Title $_.Title -Office $_.Office -OfficePhone $_.OfficePhone -Enabled $true -AccountPassword (ConvertTo-SecureString -AsPlainText $Password -Force) -ChangePasswordAtLogon $true
Write-host "Added User $($_.name) to $($_.OU)" -ForegroundColor Green
}
}
Function Add-Group {
process {
New-ADGroup -Name $_.OU -DisplayName $_.OU -Path "OU=$($_.OU),$($ADRootDSEName)" -GroupCategory Security -GroupScope Global
Write-host "Added SecurityGroupGroup $($_.OU)" -ForegroundColor Green
}
}
Function Add-GroupUser{
process {
Add-ADGroupMember -Identity "CN=$($_.OU),OU=$($_.OU),$($ADRootDSEName)" -Members "CN=$($_.Name),OU=$($_.OU),$($ADRootDSEName)"
Write-host "Added Users $($_.Name) to SecurityGroup $($_.OU)" -ForegroundColor Green
}
}
# Добавляем OU
$OuDB | Add-OU $_
# Создаем пользователей и добавляем в нужные OU
$UsrDB | Add-User $_
#Создаем группу безопасности глобальную в домене
$GroupDB | Add-Group $_
#Добавляем пользователей в группы безопасности по отделам
$UsrDB | Add-GroupUser $_