Загрузка данных
Ниже представлены готовые команды PowerShell для выполнения третьей практической работы. Убедитесь, что вы запускаете консоль PowerShell от имени Администратора.
### Проверка сети
Перед началом работы проверьте, что у сервера установлен статический IP-адрес и верно указан DNS:
```powershell
ipconfig /all
```
### Шаг 1. Создание структуры Организационных Подразделений (OU)
Команды для создания корневого подразделения Company и вложенных отделов IT и HR. Для всех подразделений включена защита от случайного удаления:
```powershell
# 1. Создаем корневое подразделение Company
New-ADOrganizationalUnit -Name "Company" -Path "DC=lab,DC=local" -ProtectedFromAccidentalDeletion $true
# 2. Создаем подразделение IT внутри Company
New-ADOrganizationalUnit -Name "IT" -Path "OU=Company,DC=lab,DC=local" -ProtectedFromAccidentalDeletion $true
# 3. Создаем подразделение HR внутри Company
New-ADOrganizationalUnit -Name "HR" -Path "OU=Company,DC=lab,DC=local" -ProtectedFromAccidentalDeletion $true
```
### Шаг 2. Создание пользователей
Создание сотрудников из разных отделов с требованием смены пароля при первом входе:
```powershell
# Подготовка пароля (преобразование в безопасный формат)
$SecurePassword = ConvertTo-SecureString "P@ssw0rd123" -AsPlainText -Force
# 1. Создание пользователя Ivanov в OU=IT
New-ADUser -Name "Ivanov Ivan" -GivenName "Ivan" -Surname "Ivanov" -SamAccountName "ivanov" -UserPrincipalName "ivanov@lab.local" -Path "OU=IT,OU=Company,DC=lab,DC=local" -AccountPassword $SecurePassword -Enabled $true -ChangePasswordAtLogon $true -Department "IT"
# 2. Создание пользователя Petrova в OU=HR
New-ADUser -Name "Petrova Anna" -GivenName "Anna" -Surname "Petrova" -SamAccountName "petrova" -UserPrincipalName "petrova@lab.local" -Path "OU=HR,OU=Company,DC=lab,DC=local" -AccountPassword $SecurePassword -Enabled $true -ChangePasswordAtLogon $true -Department "HR"
```
### Шаг 3. Создание групп безопасности
Создание глобальной группы IT_Admins и добавление в неё только что созданного пользователя ivanov:
```powershell
# 1. Создание группы
New-ADGroup -Name "IT_Admins" -GroupScope Global -GroupCategory Security -Path "OU=IT,OU=Company,DC=lab,DC=local"
# 2. Добавление пользователя в группу
Add-ADGroupMember -Identity "IT_Admins" -Members "ivanov"
```
### Шаг 4. Создание служебной учетной записи (Service Account)
Создание учетной записи svc_backup в подразделении IT. Обратите внимание, что для нее применяется специальное свойство: пароль никогда не истекает:
```powershell
# Создание служебного аккаунта
New-ADUser -Name "Service Backup" -GivenName "Service" -Surname "Backup" -SamAccountName "svc_backup" -Path "OU=IT,OU=Company,DC=lab,DC=local" -AccountPassword $SecurePassword -Enabled $true
# Настройка свойств: Пароль не истекает
Set-ADUser -Identity "svc_backup" -PasswordNeverExpires $true
```
*(Примечание: в команде создания я использовал переменную $SecurePassword с прошлого шага для удобства).*
### Шаг 5. Проверка и поиск объектов
Эти команды понадобятся вам для проверки работы, а также для создания скриншотов с результатами их выполнения для отчета:
```powershell
# Найти всех пользователей в OU=IT
Get-ADUser -Filter * -SearchBase "OU=IT,OU=Company,DC=lab,DC=local" | Select-Object Name, Enabled
# Проверить, кто входит в группу IT_Admins
Get-ADGroupMember -Identity "IT_Admins"
# Проверить свойства пользователя (убедиться, что пароль не истекает)
Get-ADUser -Identity "svc_backup" -Properties PasswordNeverExpires | Select-Object Name, PasswordNeverExpires
```
**Бонус для контрольных вопросов:**
В задании есть вопрос: *"Как через PowerShell посмотреть всех отключенных (disabled) пользователей в домене?"*. Для этого в PowerShell предусмотрена следующая команда:
```powershell
Search-ADAccount -AccountDisabled -UsersOnly | Select-Object Name, SamAccountName
```
Вот максимально сжатые ответы:
**1. В чем разница между Global и Domain Local группами?**
* **Global:** группирует объекты строго своего домена.
* **Domain Local:** назначает права доступа к ресурсам внутри домена.
**2. Почему для служебных учетных записей важно ставить “Password never expires”?**
* Чтобы предотвратить остановку служб и приложений из-за автоматического истечения срока пароля.
**3. Что такое UPN и чем он отличается от SamAccountName?**
* **UPN:** современный логин в формате email (user@domain.local).
* **SamAccountName:** устаревший формат (DOMAIN\user) с ограничением в 20 символов.
**4. Почему при создании OU рекомендуется ставить “Protect container from accidental deletion”?**
* Для защиты подразделения и всех вложенных в него объектов от случайного удаления администратором.
**5. Как через PowerShell посмотреть всех отключенных пользователей?**
* Выполнить команду: Search-ADAccount -AccountDisabled -UsersOnly