Для создания группы в Powershell есть командлет New-ADGroup. В отличии варианта с интерфейсом мы должны указывать где мы ее хотим создать. Для примера так мы создадим глобальную группу безопасности:
New-ADGroup -GroupScope Global -Name TestGroup
Группа создастся в контейнере Users и, если не указано иного, типа Security. Ключ GroupScope может принимать несколько параметров:
- DomainLocal или 0
- Global или 1
- Universal или 2
Если мы хотим создать группу в другой OU или контейнере (CN) стоит сделать так:
New-ADGroup -Name "TestGroup" -GroupScope 0 -Path "OU=Moscow,DC=domain,DC=local" -GroupCategory Distribution
В случае выше мой домен domain.local, а OU Moscow. Если нам не подходит категория группы Security, мы можем ее изменить. Тут у нас есть 2 параметра:
- Distribution или 0
- Security или 1
Что бы добавить пользователя Test User (0003) в эту группу нужно выполнить:
Add-ADGroupMember -Identity "Test Group" -Members "CN=Test User (0003),OU=Moscow,DC=domain,DC=local"
Более подробно как добавить пользователя в группу с Powershell мы уже рассматривали.
Создадим глобальную группу распространения, которой сможет управлять пользователь ( ManagedBy ) пользователь "Test User (001)":
$where = "OU=Moscow,DC=domain,DC=local"
$who = "Test User (0001)"
New-ADGroup -Name "NewGroup" -GroupCategory Distribution -GroupScope Global -Path $where -ManagedBy $who
Ключ Name создает CN (Common Name) и оно применяется и для других имен типа LdapDisplayName. Если мы хотим указать иные, то для этого есть следующие ключи:
- DisplayName
- SamAccountName
Есть так же другие ключи, которые указывают описание и домашнюю страницу принимая значение в строке:
- Description
- HomePage
Дополнительные атрибуты при создании группы Powershell
У нас есть дополнительные атрибуты, которые мы сможем увидеть в группе включив следующие функции:
Для их обозначения есть ключ OtherAttributes, который принимает тип данных HashTable. Для примера я установлю имя, которое будет отображаться для администраторов:
$attributes = @{"adminDisplayName"="For Testing";}
New-ADGroup -Name "NewGroup2" -GroupScope Global -OtherAttributes $attributes
Изменение группы в Powershell Set-ADGroup
В Set-ADGroup у нас доступны все те же ключи и мы можем изменить все, кроме CN (Common Name). Для более интересного примера все ключи я передам через переменную parametrs с хэш таблицей из ключей и значений:
$parametrs = @{"description"="New Description";"ManagedBy"="Administrator";"GroupScope"="Global";"GroupCategory"="Security";}
Set-ADGroup -Identity "New Group" @parametrs
Единственно отличие в этом командлете - это изменение атрибутов. В примере выше мы добавляли дополнительное имя для администраторов. Для того что бы его как-то изменить у нас есть несколько ключей:
- Remove - удаление конкретного значения
- Add - добавление значения
- Replace - замена значения
- Clear - очистка всех значение у атрибута
Для примера так мы можем очистить значения, которое раннее давали атрибуту:
Set-ADGroup -Identity "NewGroup2" -Clear "AdminDisplayName"
Так добавим его заново:
Set-ADGroup -Identity "NewGroup2" -Add @{"adminDisplayName"="For Testing";}
Пример использования в сценарии
Например у нас появился новый администратор и ему нужно дать права на управление группами. Все группы у нас хранятся отдельно от системных ( например Domain Admins). В моем случае все группы в OU Moscow с доменом domain.local. Для этого я получаю все группы и затем передаю их на изменение:
Get-ADGroup -Filter * -SearchBase "OU=Moscow,DC=domain,DC=local" | Set-ADGroup -ManagedBy "Test User (0002)"
...
Подписывайтесь на наш Telegram канал
Теги: #powershell #ad