22 ноября 2012 г.

Автоматизация поднятия первого контроллера домена

Как говорится -  лень двигатель прогресса. И только благодаря этому появился у меня скрипт который через Powershell поднимает роль контроллера домена, добавляет новых пользователей, подразделения, перемещает пользователей в нужные OU, создает группы безопасности и в них же с добавляет пользователей.

# Имя модуля: 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 $_