Get-ADGroup: Управление группами Active Directory
Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами "Не удается продолжить выполнение кода, поскольку система не обнаружила VCRUNTIME140.dll". Идем далее и я хочу с вами сегодня поделиться наработками и скриптами PowerShell, которые помогут вам в управлении группами безопасности Active Directory. Думаю, что многим будет полезен данный материал и вы сможете почерпнуть из него много интересного, что в итоге вам сэкономит кучу времени и позволит прокачать свои навыки и знания.
Что за командлет Get-ADGroup?
Командлет Get-ADGroup является одним из множества командлетов, предоставляемых PowerShell для работы с Active Directory (AD) в операционной системе Windows. Get-ADGroup используется для получения информации о группах в AD. Назначение командлета заключается в том, чтобы позволить администраторам получать информацию о группах в AD, такую как имя группы, ее уникальный идентификатор (GUID), путь, к которому привязана группа, и другие свойства. Это очень полезно для управления группами и выполнения различных задач в AD.
Преимущества командлета Get-ADGroup в Active Directory перед похожими программами:
- Интеграция с PowerShell: Get-ADGroup является частью PowerShell, что позволяет использовать его вместе с другими командлетами и функциями PowerShell для более эффективной автоматизации и управления AD.
- Гибкость фильтрации: командлет предоставляет мощные возможности фильтрации, позволяющие получать только необходимую информацию о группах в AD.
- Широкий набор свойств: Get-ADGroup позволяет получить различные свойства групп, что делает его более гибким и полезным для различных задач.
- Простота использования: благодаря простому синтаксису и интуитивно понятным параметрам, командлет легко использовать, даже для администраторов без опыта работы с PowerShell.
- В целом, командлет Get-ADGroup является мощным инструментом для работы с группами в Active Directory. Он позволяет получить информацию о группах, управлять ими и автоматизировать различные задачи в AD.
Постановка задачи
В Active Directory для управления пользователями и назначение им различных прав доступа, используются группы безопасности. Это удобно, когда вы можете систематизировать распределение прав доступа, применение групповых политик и многое другое, так как это упрощает процесс администрирования учетных записей пользователей и в целом повышает безопасность всей системы.
Для повседневных и базовых задач по управлению группами Active Directory чаще всего используют оснастку "Active Directory Пользователи и компьютеры (ADUC)", но когда дело касается автоматизации и рутинной работы, то тут в дело вступает язык программирования PowerShell. PowerShell умеет выполнять все действия по управлению группами в домене Active Directory. Чуть ниже мы подробно разберем, как с помощью PowerShell:
- ✅ Создать новую группу AD
- ✅ Изменить состав группы AD, добавив или удалив пользователей
- ✅ Изменить атрибуты группы AD
- ✅ Получить список пользователей и при желании экспортировать его для дальнейшей обработки
- ✅ Удаление группы AD
Скрипт по очистке группы от выключенных учетных записей
У меня есть тестовая группа безопасности "Test-groups-for-delete-disable-users", необходимо произвести ее очистку от неактивных пользователей.
# Указываем имя доменной группы
$groupName = "Test-groups-for-delete-disable-users"
# Получаем объект группы по имени
$group = Get-ADGroup $groupName
# Получаем список пользователей в группе и помещаем их в переменную
$users = Get-ADGroupMember $group | Where-Object {$_.objectClass -eq "user"}
# Создаем пустой список для хранения удаленных пользователей
$deletedUsers = @()
# Перебираем каждого пользователя в списке
foreach ($user in $users) {
# Проверяем, включена ли учетная запись пользователя
$accountEnabled = (Get-ADUser $user).Enabled
# Если учетная запись пользователя не включена, то удаляем его из группы
if (!$accountEnabled) {
Remove-ADGroupMember -Identity $group -Members $user -Confirm:$false
# Добавляем удаленного пользователя в список удаленных пользователей
$deletedUsers += $user.Name
}
}
# Выводим список удаленных пользователей
Write-Host "Удалены следующие пользователи:"
$deletedUsers
Скрипт по очистке списка групп от выключенных учетных записей
Данная задача похожа на ту, что была выше, но тут у нас есть файл со списком групп безопасности Active Directory, к которому мы и будем обращаться в скрипте.
# Указываем путь к файлу со списком групп
$groupsFile = "путь_к_файлу"
# Читаем содержимое файла и помещаем его в переменную
$groups = Get-Content $groupsFile
# Перебираем каждую группу из списка
foreach ($groupName in $groups) {
# Получаем объект группы по имени
$group = Get-ADGroup $groupName
# Получаем список пользователей в группе и помещаем их в переменную
$users = Get-ADGroupMember $group | Where-Object {$_.objectClass -eq "user"}
# Создаем пустой список для хранения удаленных пользователей
$deletedUsers = @()
# Перебираем каждого пользователя в списке
foreach ($user in $users) {
# Проверяем, включена ли учетная запись пользователя
$accountEnabled = (Get-ADUser $user).Enabled
# Если учетная запись пользователя не включена, то удаляем его из группы
if (!$accountEnabled) {
Remove-ADGroupMember -Identity $group -Members $user -Confirm:$false
# Добавляем удаленного пользователя в список удаленных пользователей
$deletedUsers += $user.Name
}
}
# Выводим список удаленных пользователей для текущей группы
Write-Host "Удалены следующие пользователи из группы $groupName:"
$deletedUsers
}
Создать 10 групп в разных доменах и вложить одну в другую
Задача такая. Есть Корневой домен и дочерний. В дочернем домене нужно создать 10 групп безопасности с шаблонным названием и увеличенным порядковым номером с типом "Глобальная". В корневом домене тоже создать 10 доменных групп безопасности с шаблонным названием и увеличенным порядковым номером с типом "Локальная". Поместить группу из дочернего домена в группу корневого домена на основании имени и порядкового номера. Вот такой пример скрипта:
# Шаг 1: Взять путь к OU root.pyatilistnik.org/Groups/Printer/ и положить его в переменную 1
$ouPath1 = "OU=Printer,OU=Groups,DC=root,DC=Pyatilistnik,DC=org"
# Шаг 2: Создать 10 доменных глобальных групп с именем prn-prn01pyatilistnik-10-251-pr-g до prn-prn01pyatilistnik-10-261-pr-g в домене root.pyatilistnik.org
for ($i = 295; $i -le 305; $i++) {
$groupName = "prn-prn01pyatilistnik-10-$i-pr-g"
New-ADGroup -Name $groupName -GroupScope Global -Path $ouPath1 -Server dc1root.root.pyatilistnik.org
}
# Шаг 3: Взять путь к OU Pyatilistnik.org/Groups/Printer и положить его в переменную 2
$ouPath2 = "OU=Printer,OU=Groups,DC=Pyatilistnik,DC=org"
# Шаг 4: Создать 10 доменных локальных групп с именем prn-prn01pyatilistnik-10-251-pr-l до prn-prn01pyatilistnik-10-261-pr-l в домене pyatilistnik.org
for ($i = 295; $i -le 305; $i++) {
$groupName = "prn-prn01pyatilistnik-10-$i-pr-l"
New-ADGroup -Name $groupName -GroupScope DorootLocal -Path $ouPath2
}
Start-Sleep -Seconds 60 #Ждем минуту, чтобы корневой домен увидел существование групп в дочернем, иначе будет ошибка
# Шаг 5: Добавить глобальные группы из $ouPath1 в домене root.pyatilistnik.org в соответствующие локальные группы в домене pyatilistnik.org
for ($i = 295; $i -le 305; $i++) {
$globalGroupName = "prn-prn01pyatilistnik-10-$i-pr-g"
$localGroupName = "prn-prn01pyatilistnik-10-$i-pr-l"
Add-ADGroupMember -Identity $localGroupName -Members (Get-ADGroup -Identity $globalGroupName -Server dc1root.root.pyatilistnik.org)
}
Единственный афффффффтор в русскоязычной сети да и части мировой у которого все работает. Пля! вводишь и работает)))) Хороший специалист прямо отличный ))) Дружище давай чо нибудь практическое — Астериск обнови, чо нибудь по сетям Удачи