# Практическая работа № 2. Active Directory.
## 2.1 Установка ролей и компонент.
Для функционирования Active Directory необходимо установить службы Active Directory, а также ключевой компонент поддержки работоспособности домена Windows это службу DNS. Данные компоненты будут установлены на оба сервера и dc1 и dc2.
Для автоматического назначения IP адресов в нашей сети будет установлена служба DHCP. Для обеспечения отказоустойчивости ее развернем на обоих серверах dc1 и dc2.
Все настройки будем выполнять средствами Powershell.
## 2.2 Настройка dc1
Посмотрим установленные на данный момент роли.
```powershell=
Get-WindowsFeature
```

Список довольно большой.
Интересующие нас службы AD-Domain-Services, DNS и DHCP не установлены, но доступны к установке.
Установим данные службы, все их подкомпоненты и средства управления.
```powershell=
Install-WindowsFeature AD-Domain-Services, DNS, DHCP -IncludeAllSubFeature -IncludeManagementTools
```
Запускаем установку

Результат установки

Проверяем установку

Службы установлены, перезагрузка не требуется

## 2.3. Повышение роли dc1 до контроллера домена.
Повышать dc1 до контроллера домен будет также средствам Powershell.
Для создания леса будем использовать комадлет Install-ADDSForest, для него необходимо установить некоторые параметры:
- DomainName "pt.local" - имя домена
- DomainNetbiosName "PT" - NetBIOS имя домена
- CreateDnsDelegation:$false - отключим делегирование DNS
- DomainMode WinThreshold - режим домена максимально возможный (Win2016)
- ForestMode WinThreshold - режим леса максимально возможный (Win2016)
- SafeModeAdministratorPassword $password - установим пароль восстановления
- NoRebootOnCompletion:$true - перезагрузимся вручную
- Force:$true - выполнить без дополнительных вопросов
Остальные настройки оставим по умолчанию.
Получим пароль восстановления
```powershell=
$password = Read-Host -AsSecureString
```

Создадим лес следующим командлетом:
```powershell=
Install-ADDSForest -DomainName "pt.local" -DomainNetbiosName "PT" -CreateDnsDelegation:$false -DomainMode WinThreshold -ForestMode WinThreshold -SafeModeAdministratorPassword $password -NoRebootOnCompletion:$true -Force:$true
```
Процесс создания леса

Создание леса завершено необходима перезагрузка

Перезагружаем сервер
```powershell=
Restart-Computer -Force -Verbose
```

Проверим результат создания леса комадлетами
```powershell=
# получим информацию о лесе
Get-ADForest
# получим информацию о домене
Get-ADomain
# получим информацию о контроллере домена
Get-ADDomainController
```


## 2.4. Авторизация dc1 как сервера DHCP
Необходимо авторизовать DHCP сервер в Active Directory
Просмотрим текущие авторизованные серверы
```powershell=
Get-DhcpServerInDC
```
Авторизованных серверов нет

Авторизуем сервер DHCP
```powershell=
Add-DhcpServerInDC -DnsName "dc1.pt.local" -IPAddress 192.168.10.200
```
Проверим результат

Сервер dc1 настроен
## 2.5. Настрока dc2.
Установка ролей аналогична dc1.
Посмотрим установленные на данный момент роли.
```powershell=
Get-WindowsFeature
```
Службы AD-Domain-Services, DNS и DHCP не установлены, но доступны к установке.

Установим данные службы, все их подкомпоненты и средства управления.
```powershell=
Install-WindowsFeature AD-Domain-Services, DNS, DHCP -IncludeAllSubFeature -IncludeManagementTools
```
Запускаем установку

Проверим установку


Службы установлены
## 2.6. Повышение рядового сервера dc2 до уровня контроллера домена.
Повышаем dc2 до уровня контроллера домена, также указываем что он будет выполнять функции DNS сервера, по умолчанию он также ялвяется сервером глобального каталога.
После повышения отказываемся от перезагрузки, перезагрузим вручную. При повышении будет запрошен пароль администратора домена pt.local.
```powershell=
$password = Read-Host -AsSecureString
Install-ADDSDomainController -InstallDns -DomainName "pt.local" -Credential (Get-Credential "PT\Administrator") -SafeModeAdministratorPassword $password -NoRebootONCompletion:$true -Force
```
Запускаем повышение и вводим пароль администратора.

Повышение завершено

Перезагружаем
```powershell=
Restart-Computer -Force -Verbose
```
Проверим результат повышения
```powershell=
# получим информацию о всех контроллерах домена
Get-ADDomainController -Filter * -Server (Get-ADDomain).DNSRoot | Select-Object Hostname, OperatingSystem
```

Просмотрим FSMO роли уровня леса
```powershell=
Get-ADForest | Select-Object DomainNamingMaster, SchemaMaster
```
Видим что держатель обоих ролей контроллер dc1

Просмотрим FSMO роли уровня домена
```powershell=
Get-ADDomain | Select-Object InfrastructureMaster, RIDMaster, PDCEmulator
```
Видим что держатель всех ролей контроллер dc1

Контроллер dc2 является BDC.
На этом настройка Active Directory в данной работу закончена.
## 2.7. Авторизация сервера dc2 как DHCP сервера.
Необходимо авторизовать DHCP сервер в Active Directory
Просмотрим текущие авторизованные серверы
```powershell=
Get-DhcpServerInDC
```

Авторизуем сервер DHCP
```powershell=
Add-DhcpServerInDC -DnsName "dc2.pt.local" -IPAddress 192.168.10.201
```
Проверим результат

Сервер dc2 настроен
## 2.8. Ввод машины pc1 в домен.
Для ввода машины pc1 будем использовать следующий командлет
```powershell=
Add-Computer -DomainName pt.local -DomainCredential PT\Administrator -Restart -Force
```
Запускаем присоединение к домену и вводим пароль администратора, которого указали в строке запуска.

Зайдем на машину под администратором домена

Порверим доступ с машины pc1 до ресурсов домена, например до SYSVOL
```powershell=
Get-ChildItem -Path "\\pt.local\SYSVOL"
```
Доступ есть.

## 2.9. Выполнение скриптов и наполнение домена.
Далее необходимо наполнить домен следующим образом
```powershell=
New-ADOrganizationalUnit -Name Accounts
New-ADOrganizationalUnit -Name VIP -path 'OU=Accounts,dc=pt,DC=local'
New-ADOrganizationalUnit -Name Sysadmins -path 'OU=Accounts,dc=pt,DC=local'
New-ADOrganizationalUnit -Name Progr -path 'OU=Accounts,dc=pt,DC=local'
New-ADOrganizationalUnit -Name Buhg -path 'OU=Accounts,dc=pt,DC=local'
New-ADOrganizationalUnit -Name HR -path 'OU=Accounts,dc=pt,DC=local'
New-ADUser -Name "Alex" -GivenName "Alex" -UserPrincipalName "Alex@pt.local" -path 'OU=VIP,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString A-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Gleb" -GivenName "Gleb" -UserPrincipalName "Gleb@pt.local" -path 'OU=Progr,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString G-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Petr" -GivenName "Petr" -UserPrincipalName "Petr@pt.local" -path 'OU=Sysadmins,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString P-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Anton" -GivenName "Anton" -UserPrincipalName "Anton@pt.local" -path 'OU=Buhg,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString A-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Igor" -GivenName "Igor" -UserPrincipalName "Igor@pt.local" -path 'OU=Sysadmins,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString I-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Vasya" -GivenName "Vasya" -UserPrincipalName "Vasya@pt.local" -path 'OU=Progr,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString V-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Pavel" -GivenName "Pavel" -UserPrincipalName "Pavel@pt.local" -path 'OU=Progr,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString P-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Boris" -GivenName "Boris" -UserPrincipalName "Boris@pt.local" -path 'OU=Progr,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString B-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Lida" -GivenName "Lida" -UserPrincipalName "Lida@pt.local" -path 'OU=Buhg,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString L-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Sveta" -GivenName "Sveta" -UserPrincipalName "Sveta@pt.local" -path 'OU=VIP,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString S-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Nata" -GivenName "Nata" -UserPrincipalName "Nata@pt.local" -path 'OU=HR,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString N-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Yana" -GivenName "Yana" -UserPrincipalName "Yana@pt.local" -path 'OU=Buhg,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString Y-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Maria" -GivenName "Maria" -UserPrincipalName "Maria@pt.local" -path 'OU=HR,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString M-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Ada" -GivenName "Ada" -UserPrincipalName "Ada@pt.local" -path 'OU=Progr,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString A-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Roza" -GivenName "Roza" -UserPrincipalName "Roza@pt.local" -path 'OU=Buhg,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString R-Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "Olga" -GivenName "Olga" -UserPrincipalName "Olga@pt.local" -path 'OU=HR,OU=Accounts,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString O-Qq123456 -AsPlainText -force) -Enabled $true
New-ADGroup "VIP" -path 'OU=VIP,OU=Accounts,dc=pt,DC=local' -GroupCategory Distribution -GroupScope Global -PassThru –Verbose
New-ADGroup "VIP-sec" -path 'OU=VIP,OU=Accounts,dc=pt,DC=local' -GroupCategory Security -GroupScope Global -PassThru –Verbose
Add-ADGroupMember -Identity VIP -Members Alex, Sveta, Petr, Ada, Maria, Anton
Add-ADGroupMember -Identity VIP-sec -Members Alex, Sveta
New-ADGroup "Sysadmins" -path 'OU=Sysadmins,OU=Accounts,dc=pt,DC=local' -GroupCategory Distribution -GroupScope Global -PassThru –Verbose
New-ADGroup "Sysadmins-sec" -path 'OU=Sysadmins,OU=Accounts,dc=pt,DC=local' -GroupCategory Security -GroupScope Global -PassThru –Verbose
Add-ADGroupMember -Identity Sysadmins -Members Petr, Igor
Add-ADGroupMember -Identity Sysadmins-sec -Members Petr, Igor
New-ADGroup "HR" -path 'OU=HR,OU=Accounts,dc=pt,DC=local' -GroupCategory Distribution -GroupScope Global -PassThru –Verbose
New-ADGroup "HR-sec" -path 'OU=HR,OU=Accounts,dc=pt,DC=local' -GroupCategory Security -GroupScope Global -PassThru –Verbose
Add-ADGroupMember -Identity HR -Members Nata, Maria, Olga
Add-ADGroupMember -Identity HR-sec -Members Nata, Maria, Olga
New-ADGroup "Buhg" -path 'OU=Buhg,OU=Accounts,dc=pt,DC=local' -GroupCategory Distribution -GroupScope Global -PassThru –Verbose
New-ADGroup "Buhg-sec" -path 'OU=Buhg,OU=Accounts,dc=pt,DC=local' -GroupCategory Security -GroupScope Global -PassThru –Verbose
Add-ADGroupMember -Identity Buhg -Members Roza, Yana, Lida, Anton
Add-ADGroupMember -Identity Buhg-sec -Members Roza, Yana, Lida, Anton
New-ADGroup "Progr" -path 'OU=Progr,OU=Accounts,dc=pt,DC=local' -GroupCategory Distribution -GroupScope Global -PassThru –Verbose
New-ADGroup "Progr-sec" -path 'OU=Progr,OU=Accounts,dc=pt,DC=local' -GroupCategory Security -GroupScope Global -PassThru –Verbose
Add-ADGroupMember -Identity Progr -Members Gleb, Vasya, Pavel, Boris, Ada
Add-ADGroupMember -Identity Progr-sec -Members Gleb, Vasya, Pavel, Boris, Ada
New-ADOrganizationalUnit -Name ADM
New-ADUser -Name "ADMPetr" -GivenName "ADMPetr" -UserPrincipalName "ADMPetr@pt.local" -path 'OU=ADM,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString Qq123456 -AsPlainText -force) -Enabled $true
New-ADUser -Name "ADMIgor" -GivenName "ADMIgor" -UserPrincipalName "ADMIgor@pt.local" -path 'OU=ADM,dc=pt,DC=local' -AccountPassword (ConvertTo-SecureString Qq123456 -AsPlainText -force) -Enabled $true
Add-ADGroupMember -Identity 'Domain Admins' -Members ADMPetr, ADMIgor
```
Данные командлеты объеденены в скрипт PTnewadusergroups.ps1, который используя Powershell ISE выполним на dc1. Результат выполнения.

Проверим наполнение Active Directory

Учетные записи созданы.
На этом данная работа закончена.