Для управления группами в Active Directory не обязательно использовать графическую оснастку Active Directory Users and Computer (ADUC). Вы можете выполнять все действия по управлению группами в домене Active Directory из командной строки PowerShell. В этой статье мы рассмотрим, как с помощью PowerShell создать новую группу в AD, добавить в нее пользователей (или удалить), вывести/экспортировать список пользователей группы и другие полезные команды, которые часто используются при администрировании AD.
- New-ADGroup: создать новую группу в Active Directory
- Add-AdGroupMember: добавить пользователей в группу Active Directory
- Remove-ADGroupMember: удалить пользователей из группы
- Get-ADGroup: получить информацию о группе AD
- Get-ADGroupMember: вывести список пользователей в группе Active Directory
- Set-ADGroup: изменить атрибуты группы AD
- Remove-ADGroup: удалить группу AD
Для управления группами AD нужно использовать специальный модуль — Active Directory Module for Windows PowerShell. Модуль RSAT-AD-PowerShell доступен во всех версиях Windows Server (начиная с Windows Server 2008R2), а в десктопных Windows 10 и Windows 11 он устанавливается как компонент RSAT.
Проверьте, загружен ли модуль AD в текущую сессию PowerShell:
Get-Module -Listavailable
Как вы видите, модуль ActiveDirectory загружен. Если нет – импортируйте его командой:
Import-Module activedirectory
Выведем список командлетов PowerShell, позволяющих управлять группами AD:
Get-Command -Module ActiveDirectory -Name "*Group*"
Доступно 11 командлетов:
- Add-ADGroupMember
- Add-ADPrincipalGroupMembership
- Get-ADAccountAuthorizationGroup
- Get-ADGroup
- Get-ADGroupMember
- Get-ADPrincipalGroupMembership
- New-ADGroup
- Remove-ADGroup
- Remove-ADGroupMember
- Remove-ADPrincipalGroupMembership
- Set-ADGroup
New-ADGroup: создать новую группу в Active Directory
Создадим новую группу безопасности в указанном контейнере (OU) Active Directory с помощью команды New-ADGroup:
New-ADGroup "TestADGroup" -path 'OU=Groups,OU=Moscow,DC=corp,dc=winitpro,DC=ru' -GroupScope Global -PassThru –Verbose
С помощью атрибута Description можно задать описание группы, а с помощью DisplayName изменить отображаемое имя.
Параметром GroupScope можно задать один из следующих типов групп:
- 0 = DomainLocal
- 1 = Global
- 2 = Universal
Создать группу распространения можно так:
New-ADGroup "TestADGroup-Distr" -path 'OU=Groups,OU=Moscow,DC=corp,dc=winitpro,DC=ru' -GroupCategory Distribution -GroupScope Global -PassThru –Verbose
При создании группы AD можно сразу заполнить любые атрибуты. Проще всего задать значения различных атрибутов группы через HashTable:
$attrs = @{"mail"="[email protected]";"displayname"="ALL MSK Admins"}
New-ADGroup -Name MSKAdmins -GroupScope Global -OtherAttributes $attrs
Add-AdGroupMember: добавить пользователей в группу Active Directory
Добавить пользователей в группу Active Directory можно с помощью командлета Add-AdGroupMember. Добавим в новую группу двух пользователей:
Add-AdGroupMember -Identity TestADGroup -Members user1, user2
Если нужно добавить в группу сразу большое количество пользователей, вы можете сохранить список учетных записей в CSV файл, затем импортировать данный файл и добавить каждого пользователя в группу с помощью простого PowerShell скрипт.
В нашем примере используется следующий формат CSV файла (список пользователей по одному в строке, имя столбца – users)
Import-CSV .\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}
Чтобы получить всех членов одной группы (groupA) и добавить их в другую группу (groupB), воспользуйтесь такой командой:
Get-ADGroupMember “GroupA” | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “Group-B” -Members $_}
Если нужно скопировать в новую группу и членов всех вложенных групп (рекурсивно), нужно воспользоваться такой командой:
Get-ADGroupMember -Identity “GroupA” -Recursive | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “GroupB” -Members $_}
В версии Active Directory, представленной в Windows Server 2016 можно использовать функцию временного членства в группах безопасности AD (Temporary/ Time Based Group Membership). Чтобы временно добавить пользователя в группу AD (например, на 2 часа), выполните команду:
$ttl = New-TimeSpan -Hours 2
Add-ADGroupMember -Identity "Domain Admins" -Members a.ivanov -MemberTimeToLive $ttl
Через 2 часа этот пользователь будет автоматически удален из данной группы.
Remove-ADGroupMember: удалить пользователей из группы
Для удаления пользователей из группы AD нужно использовать командлет Remove-ADGroupMember. Удалим из группы двух пользователей:
Remove-ADGroupMember -Identity TestADGroup -Members user1, user2
Подтвердите удаление пользователей, нажав Y -> Enter.
Если нужно удалить из группы пользователей по списку из CSV файла, воспользуйтесь такой командой:
Import-CSV .\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity ‘TestADGroup’ -members $_.users}
Get-ADGroup: получить информацию о группе AD
Для получения информации о группе домена AD используйте командлет Get-ADGroup:
Get-ADGroup 'TestADGroup'
Даная команда выводит информацию об основных атрибутах группы (DN, тип группы, имя, SID группы). Чтобы вывести значение всех атрибутов группы, выполните команду:
Get-ADGroup 'TestADGroup' -properties *
Как вы видите, теперь стали отображаться такие атрибуты, как время создания и модификации группы, описание и т.д.
Вы можете использовать командлет Get-ADGroup для поиска групп в AD по шаблону (маске). Например, следующие команды можно использовать чтобы найти все группы AD, в имени которых содержится фраза admins
Get-ADGroup -LDAPFilter “(name=*admins*)” | Format-Table
Или
Get-ADGroup -Filter {name -like "*admins*"} -Properties Description,info | Select Name,samaccountname,Description,info
(в первой команде используется LDAP фильтр, во второй фильтр по атрибуту AD):
С помощью Get-ADGroup можно получить список членов группы (хранится в атрибуте members):
Get-ADGroup -Identity "Domain Admins" -Properties members | Select-Object -ExpandProperty members
Однако для получения списка членов группы гораздо удобнее использовать другой командлет — Get-ADGroupMember.
Get-ADGroupMember: вывести список пользователей в группе Active Directory
Командлет Get-ADGroupMember позволяет получить членов группы AD. Это могут быть пользователи, компьютеры, другие группы или учетные записи служб (MSA/gMSA).
Вы можете вывести на экран список пользователей в доменной группе:
Get-ADGroupMember 'TestADGroup'
Чтобы оставить в результатах только имена пользователей, выполните:
Get-ADGroupMember 'TestADGroup'| ft name
Если в данную группу включены другие группы домена, чтобы вывести полный список членов, в том числе всех вложенных групп, воспользуйтесь параметром Recursive.
Get-ADGroupMember ‘server-admins' -recursive| ft name
Чтобы экспортировать список пользователей, состоящих в определённой группе в CSV файл (для дальнейшего использования в Excel), выполните команду:
Get-ADGroupMember ‘server-admins' -recursive| ft samaccountname| Out-File c:\ps\admins.csv
Вы можете экспортировать в текстовый файл и другие атрибуты пользователей AD. Для получения атрибутов пользователя используется командлет Get-ADUser. Например, кроме имени учетной записи, можно вывести UserPrincipalName, должность и телефон пользователя группы:
Get-ADGroupMember -Identity ’server-admins’ -recursive| foreach { Get-ADUser $_ -properties UserPrincipalName, title, OfficePhone|Select-Object title, OfficePhone }
Посчитать количество пользователей в группе можно так:
(Get-ADGroupMember -Identity 'domain admins').Count
Чтобы найти список пустых групп в определенном OU, воспользуйтесь такой командой:
Get-ADGroup -Filter * -Properties Members -searchbase “OU=Moscow,DC=corp,dc=winitpro,DC=ru” | where {-not $_.members} | select Name
С помощью командлета Get-ADGroupMember можно создать простой PowerShell скрипт для оповещения администратора, если кто-то добавил нового пользователя в определенную группу AD.
Set-ADGroup: изменить атрибуты группы AD
Командлет Set-ADGroup позволяет изменить свойства (атрибуты) любой группы Active Directory. Например, можно изменить описание и название группы:
Set-ADGroup -Identity MSKAdmins -Description “New Admin Group Description”
или так:
Get-ADGroup -Identity MSKAdmins | Set-ADGroup -Description “New Admin Group Description v2”
Скрыть определённую группу из адресной книги Exchange:
Set-ADGroup –id mskadmins -replace @{hideDLMembership=$true}
Можно изменить сразу несколько параметров группы. Список изменения удобно задать через HashTable:
Список атрибутов можно получить так или в консоли ADUC на вкладке редактора атрибутов
$attrs = @{"mail"="[email protected]";"displayname"="ALL MSK Admins"}
Set-ADGroup -Identity MSKAdmins –Add $attrs
Remove-ADGroup: удалить группу AD
Чтобы удалить групп в Active Directory используется командлет Remove-ADGroup:
Remove-ADGroup -Identity MskSales
При удалении группы появляется запрос подтверждения удаления. Чтобы отключить подтверждение удаления, добавьте параметр Confirm:
Remove-ADGroup -Identity MskSales –Confirm:$false
Get-ADObject -Filter {Deleted -eq $True -and ObjectClass -eq 'group' -and Name -like '*MskSales*' } –IncludeDeletedObjects| Restore-ADObject –verbose
Добрый день!
Подскажите, как можно выбрать учетные записи, не входящие ни в один OU.
Есть 7 групп в OU, надо отобрать учетки, невходящие ни в одну в эту группу
Спасибо.
Добрый! Не понял задачу. Давайте переформулируем: нужно выбрать из определенной OU пользователей, которые не входят в определенную группу. Так?
Все верно, есть OU «Учетные записи», находящиеся там учетки входят в одну из семи групп «Магазин1», «Магазин2″….. «Магазин7»
И есть необходимость отобрать пользователей, не входящих ни в одну из этих семи групп.
Вот пример скрипта. Скрипт выводит список пользователей из определенной OU, которые не входят в группу Domain Admins.
$group = "Domain Admins"
$members = Get-ADGroupMember -Identity $group -Recursive | Select -ExpandProperty Name
$users = Get-ADUser -SearchBase "ou=users,ou=msk,dc=corp,dc=ru" -filter *
ForEach ($user in $users) {
If (-Not ($members -contains $user)) {
Write-Host $user
}}
Так не работает(
Выводит все-равно учетки, которые находятся в определенной Ou, но не входят в группу.
Буду копать дальше, пока добавил в отбор только включенные учетки)
Скорее всего (ИМХО) непонятно по чему конкретно скрипт сравнивает, попробую пройтись по SID’у
Доброго времени суток.
Необходимо выгрузить все почтовые группы рассылки, в которые входят определённые сотрудники с определённой должностью. Подскажите какой командой или скриптом можно выполнить данный запрос?
получается:
1. Выгружаю список сотрудников, которые имеют определённую должность:
Get-ADUser -Filter {Title -like "*Директор*"} | Select-Object Name
2. Выгружаю список логинов, которые имеют соответствующую должность:
Get-ADUser -Filter {Title -like "*Директор*"} | Select-Object SamAccountName
3. Далее из полученного списка логинов выгрузить список почтовых групп рассылок, в которые они входят, т.е. у каждого логина свой список групп.
могу только по одному логину:
Get-ADPrincipalGroupMembership username | Select-Object Name
Но выгружает абсолютно все группы, а мне нужны именно почтовые группы, т.е. те, которые имеют email адрес.
Прошу помощи.
Вот как-то так:
$Users = Get-ADUser -Filter {Title -like "*Директор по региональному развитию*"}
foreach ($User in $Users)
{
$Groups = Get-ADPrincipalGroupMembership $User
(Get-ADUser $User).Name
foreach ($Group in $Groups)
{
If ((Get-ADGroup "$Group" -Properties mail).Mail -eq $null)
{
}
else
{
(Get-ADGroup "$Group" -Properties mail).Name
}
}
}
только как вывести в таблицу?
В общем-то все правильно. Немного модифицировал ваш скрипт. У меня получилось так. На выходе получаем табличку с именем учтной записи и имя группы с разделителем «;».
$Users = Get-ADUser -Filter {Title -like "*Директор по региональному развитию*"}
foreach ($User in $Users)
{
$Groups = (Get-ADuser -Identity $User -Properties memberof).memberof | Get-ADGroup
foreach ($Group in $Groups)
{
If ((Get-ADGroup "$Group" -Properties mail).Mail -eq $null)
{
}
else
{
Write-Host $User.sAMAccountName ";" (Get-ADGroup "$Group" -Properties mail).Name
}
}
}
А команда
Get-ADGroupMember ‘group_name’ -recursive| ft name
должна раскрывать любые вложенные группы или есть какие то ограничения?
Например у меня в группу «common_users» входит группа «Пользователи домена».
Если использовать
Get-ADGroupMember ‘Пользователи домена’ -recursive| ft name
то выдает большой список доменных пользователей.
Но если использовать
Get-ADGroupMember ‘common_users’ -recursive| ft name
то выводит только пользователей группы common_users, а группы Пользователи домена — нет.
Методом эксперимента установил, что из группы Пользователи домена отображаются те пользователи, для которых Пользователи домена НЕ основная группа.
Маша и Петя оба состоят в группах «Пользователи домена» и «Бухгалтеры»,
при этом для Маши основная группа Пользователи домена, а для Пети основная группа Бухгалтеры, то при выполнении
Get-ADGroupMember ‘common_users’ -recursive| ft name
Петя будет отображен, а Маша нет.
Это как то можно обойти? Чтоб показывались абсолютно все пользователи кто так или иначе входит в common_users.
Пользователи являются членами Domain Users через primaryGroupID.
Не знаю, что делать в вашем случае. Вероятно, не самое хорошее решение использовать группу Domain Users в качестве члена другой группы безопасности AD.
С пользователями домена — это частный случай. В общем получается, что если пользователь состоит только в одной группе (которая является его основной), то он не будет отображен при выполнении команды с рекурсией.
Добрый день.
Не подскажите как как получить список групп из родительской OU не получив при этом группы из дочерних OU.
Т.е. есть OU=1 в ней несколько групп и OU=1.1, OU=1.2 … со своими группами. Как получить группы только OU=1?
Get-ADGroup -SearchBase «OU=1,DC=mycompany,DC=lan» выводит все группы.
Чтобы искать только по группам первого уровня, а не по вложенным, можно использовать аргумент: -SearchScope OneLevel
Get-ADGroup -Filter * -SearchBase 'OU=1,DC=mycompany,DC=lan' -SearchScope OneLevel
Добрый день!
При добавлении юзеров в группу users.csv, получаю такую ошибку:
Add-ADGroupMember : Не удается обработать параметр, так как имя параметра «Member» неоднозначно. Возможные совпадения:
Покажите полный код ошибки. Там есть указания на имена пользователей? Может быть что команлет ругается на то, что у вас есть пользователи вида: aaivanov и aaivanov2.
Add-ADGroupMember : Parameter cannot be processed because the parameter name ‘Member’ is ambiguous. Possible matches include ???
Или попробуйте вместо Import-CSV использовать Get-Content:
Get-Content .\users.csv | % {Add-ADGroupMember "‘TestADGroup" -Members $_}
Подскажите могу ли я получить список всех групп куда входить пользователь?
Как раз вчера опубликовал стать. на эту тему: https://winitpro.ru/index.php/2020/03/24/skopirovat-gruppy-active-directory-drugomu-polzovatelyu/
Список групп пользователя:
Get-ADUser -Identity username-Properties memberof | Select-Object -ExpandProperty memberof
Большое спасибо
Здравствуйте. Во-первых, хочу выразить Вам благодарность за статью. Ваш труд облегчил многим людям работу.
Хотел спросить, возможно ли подсунуть в скрипт два csv файла, в одном из которых будет список юзеров, во втором список групп, чтобы по итогу все юзеры были добавлены во все указанные группы.
Спасибо.
Нужен совет. Есть AD всероссийской организации, в нём есть контейнеры федеральных округов, в округах области, в областях офисы, в офисах юзеры. И есть некая глобальная группа, в которую входят понемногу юзеры из всех областей.
Нужно выбрать юзеров одной области (всех офисов данной области), входящих в эту глобальную группу. Как это сделать? Напишите пожалуйста пример команды Get-ADGroupMember, не могу придумать сам.
Как-то так:
Get-ADGroupMember ruspb_proxy_users|where {$_.distinguishedName -like "*OU=Users,OU=SPB*"}
Отличные примеры!
Хотелось бы добавить, что выбор рекурсивно всех пользователей группы включая все подгруппы лучше выполнять вот таким образом, особенно когда понадобится выбрать дополнительне атрибуты пользователя.
$GroupToSearch = "TestADGroup";
$GroupDN = (Get-ADGroup $GroupToSearch).DistinguishedName;
Get-ADUser -Filter { MemberOf -RecursiveMatch $GroupDN};
Такое решение работает разва в полтора-два быстрее чем классический пример:
Get-ADGroupMember -Identity $GroupToSearch -Recursive | Get-ADUser
На большом количество пользователей существенное подспорье.
Для замера скорости исполнения:
(Measure-Command { Get-ADUser -Filter { MemberOf -RecursiveMatch $GroupDN}; }).TotalMilliseconds
(Measure-Command { Get-ADGroupMember $GroupDN -Recursive | Get-ADUser; }).TotalMilliseconds
Начет такой разницы в скорости быстродействия не знал. Спасибо за инфу!
Добрый день! Подскажите как группу добавить к другой группе в member и membersOf? Спасибо
Также как и пользователей, через Add-AdGroupMember:
The Add-ADGroupMember cmdlet adds one or more users, groups, service accounts, or computers as new members of an Active Directory group
А как добавить галочку Manager can update membership list
С помощью стандартных командлетов эта опция не включается.
Можно назначить права на группу для определенного пользователя.
Сначала назначем менеджера:
$Group = Get-ADGroup YourGroup
$user = Get-ADUser manager1
Set-ADGroup $Group -Replace @{managedBy=$manager1.DistinguishedName}
Затем назначем ему права:
$GroupACL = Get-Acl AD:\$Group
$UserSid = New-Object System.Security.Principal.SecurityIdentifier ($user.SID.Value)
$Rights = [System.DirectoryServices.ActiveDirectoryRights]::WriteProperty
$Control = [System.Security.AccessControl.AccessControlType]::Allow
$Guid = [guid]"bf9679c0-0de6-11d0-a285-00aa003049e2"
$Rule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule ($UserSid, $Rights, $Control, $Guid)
$GroupACL.AddAccessRule($Rule)
Set-Acl -AclObject $GroupACL -path AD:\$Group
Спасибо за быстрый ответ! Тернистый путь. А можете подсказать, как это прикрутить к созданию групп по списку.
оказалось проще в начале создать группы, затем по тому же списку проставить галочки
Добрый день. Подскажите пожалуйста как в данном случае сделать исключение для «Where-Object»? Дело в том что внутри контейнера «Административно-хозяйственный отдел» находится контейнер «Канцелярия» и при исключении «OU=Административно-хозяйственный отдел,OU=Пользователи,OU=структура,DC=домен,DC=ru» исключаются так же из контейнера «Канцелярия», как этого избежать? «-SearchScope OneLevel» не проходит, либо я где-то напутал. В итоге при перемещении пользователя из контейнера «Административно-хозяйственный отдел» в подконтейнер «Канцелярия», и выполнении команды, удаление из группы «Группа рассылки Административно-хозяйственный отдел» не происходит. Спасибо!
Get-ADUser -filter * -SearchBase «OU=Пользователи,OU=структура,DC=домен,DC=ru» | ? {!$_.DistinguishedName.Contains(«OU=Административно-хозяйственный отдел,OU=Пользователи,OU=структура,DC=домен,DC=ru»)} | foreach-Object -process {Remove-ADGroupMember -identity «Группа рассылки Административно-хозяйственный отдел» -Members $_.SamAccountName -Confirm:$False}
Привет. А как подсчитать количество пользователей в группе AD, если их там больше 1000 ?
На команду (Get-ADGroupMember -Identity ‘example’).Count выдает
Get-ADGroupMember : Операция возвращена из-за превышения предела времени ожидания.
$GroupDN = (Get-ADGroup 'example').DistinguishedName
(Get-ADUser -Filter {MemberOf -RecursiveMatch $GroupDN}).Count
Здравствуйте. Помогите с задачей, пожалуйста.
Нужно выгрузить из ad список пустых групп и групп в которых все пользователи заблокированы. И учесть группы в которых могут состоять «пустые» группы или группы с заблокированными пользователями и тоже вывести их в этот список.
Пока смог справиться только с полностью пустыми группами:
Get-ADGroup -Filter * -Properties Members -SearchBase “OU Name” | Where-Object {$_.Members.count -eq 0} | select Name
В массив запихнуть все группы.
Потом подсчитать в каких из них сколько людей не заблокированных:
$GroupDN = (Get-ADGroup 'example').DistinguishedName
(Get-ADUser -Filter {(MemberOf -RecursiveMatch $GroupDN) -and (Enabled -eq $True)}).Count
Наверное не совсем точно описал задачу.
Если в группе нет пользователей, то она «пустая». Если в группе все пользователи заблокированы, то ее тоже считаем «пустой». Если группа содержит в себе другие группы и все они «пустые», то ее тоже считаем «пустой», если содержит в себе, помимо «пустых» групп и заблокированных пользователей, активных пользователей и активные группы, то группу «пустой» не считаем.
Ну, все верно.
# Создаем массив с указанием DistinguishedName групп которые нас интересуют.
# В примере все группы SamAccountName которых начинаются на GROUPS_
$arrGroupsDN = (Get-ADGroup -Filter {SamAccountName -like 'GROUPS_*'}).DistinguishedName
# Потом проходим по этому массиву
ForEach ($GroupDN in $arrGroupsDN) {
# Write-Host $("Group: " + $GroupDN)
# Получаем количество незаблокированных пользователей в группе и всех вложенных в нее рекусривно
$EnabledUsersCount = (Get-ADUser -Filter {(MemberOf -RecursiveMatch $GroupDN) -and (Enabled -eq $True)}).Count
# Write-Host $("Count: " + $EnabledUsersCount)
# Если количество пользователей больше 0
If ($EnabledUsersCount > 0) {
# то выводим DistinguishedName этой группы
$GroupDN
}
}
Добрый день, просьба помочь…при копировании юзеров из одной группы в другую выходит ошибка — всю голову сломал, что не так?
— ругается яко бы на название группы и то что оно длинное, с короткими именами все ок, но что делать если у меня название группы такое длинное…а это принципиально!
Попробуйте добавить Get-ADGroup
Get-ADGroup "test_ИнфОтСлПерсонДляРуковод_КадровыйУчет_Read" | Get-ADGroupMember | Get-ADUser | ForEach-Object { Add-ADGroupMember -Identity "test_ИнфОтСлПерсонДляРуковод_Конкурсы_Read" -Members $_}
А еще рекомендуют перевернуть всю конструкцию вот таким образом:
Add-ADGroupMember -Identity 'test_ИнфОтСлПерсонДляРуковод_Конкурсы_Read' -Members (Get-ADGroupMember -Identity 'test_ИнфОтСлПерсонДляРуковод_КадровыйУчет_Read' -Recursive)
не нифига((
PS C:\Users\admin> Get-ADGroup «test_ИнфОтСлПерсонДляРуковод_КадровыйУчет_Read» | Get-ADGroupMember | Get-ADUser | ForEach-Object { Add-ADGroupMember -Identity «test_ИнфОтСлПерсонДляРуковод_Конкурсы_Read» -Members $_} Get-ADGroupMember : Произошла ошибка операции
строка:1 знак:64
+ … нфОтСлПерсонДляРуковод_КадровыйУчет_Read» | Get-ADGroupMember | Get-A …
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (CN=test_ИнфОтСл…holding,DC=corp:ADGroup) [Get-ADGroupMember], AD
Exception
+ FullyQualifiedErrorId : ActiveDirectoryServer:8224,Microsoft.ActiveDirectory.Management.Commands.GetADGro
upMember
PS C:\Users\admin> Add-ADGroupMember -Identity ‘test_ИнфОтСлПерсонДляРуковод_Конкурсы_Read’ -Members (Get-ADGroupMember -Identity ‘test_ИнфОтСлПерсонДляРуковод_КадровыйУчет_Read’ -Recursive)
Get-ADGroupMember : Запрошенная операция не была выполнена, так как пользователь не зарегистрирован
строка:1 знак:84
+ … ‘ -Members (Get-ADGroupMember -Identity ‘test_ИнфОтСлПерсонДляРуковод …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (test_ИнфОтСлПер…дровыйУчет_Read:ADGroup) [Get-ADGroupMember], AD
Exception
+ FullyQualifiedErrorId : ActiveDirectoryServer:1244,Microsoft.ActiveDirectory.Management.Commands.GetADGro
upMember
А если через переменную:
$ArrUsers = @(Get-ADGroupMember -Identity 'test_ИнфОтСлПерсонДляРуковод_КадровыйУчет_Read' -Recursive);
Add-ADGroupMember -Identity 'test_ИнфОтСлПерсонДляРуковод_Конкурсы_Read' -Members $ArrUsers
не то же самое…
Добрый день, подскажите пожалуйста как лучше перенести учетные записи пользователей между доменами Active Directory в пределах разных лесов?
Move-ADObject позволяет перенести обхекты между OU или доменами в лесу:
When an object is moved between domains, both the source DC and the target DC need to be the RID Master of their domains.
Move-ADObject -Identity "CN=Dmitriy,OU=Users,DC=winitpro,DC=ru" -TargetPath "OU=Users,DC=RU,DC=corp,DC=winitpro,DC=ru" -TargetServer "dc01.corp.winitpo.ru"
Как обойти ограничение глобальной группы, когда в неё включены пользователи из другого (дружественного) домена?
-rеcurcive тоже не помогает от этой занозы.
Get-ADGroupMember : An unspecified error has occurred
At line:1 char:1
+ Get-ADGroupMember "msk_admins" -Recursive | Select-Obje ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (msk_admins:ADGroup) [Get-ADGroupMember], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember
При однострононнем доверии просто не работает…
При двухстороннем надо смотреть не удалены ли аккаунты в группу в другом домене
_https://learn.microsoft.com/en-us/troubleshoot/windows-server/identity/get-adgroupmember-error-remote-forest-members
Здравствуйте
Не получилось выполнить массовое добавление в группу с помощью команды
Import-CSV .\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}
Немного отредактировал и получилось
Import-CSV .\users.csv | ForEach-Object -process {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}
В статье не может быть ошибки?
Просто у нас разница в формате csv файлов 🙂
Добавьте, что если надо добавить компьютеры в группу учетную запись компьютера, нужно добавить $ в конце имени компьютера (это атрибут SAMAccountName):
Add-AdGroupMember -Identity TestADGroup -member mskdc01$
Спасибо тебе добрый человек
Коллеги, приветствую
Можно ли как то это автоматизировать добавление ПК в группу через ГПО на определенную ОУШ-ку?
Т.е. вы хотите повесить на OU политику и чтобы все компьютеры таких(ой) OU стали членами какой-то группы?
Ну в целом такое возможно с помощью скриптов, но обычно все наоборот. Вы добавляете компьютер в группу и на него применяется политика.
Я использую удаление пользователей из группы из импортированного списка. Но проблема в том что нужно подтвердить действие для каждого удаляемого объекта. Можно ли как то это обойти ? Нажатие А — Да для всех не срабатывает.
Почти все командлеты модуля AD поддерживают режим тихого выполнения, без промтов. Добавьте:
Remove-ADGroupMember .... Confirm:$False
Пробовал… к сожалению все равно запрашивает.
Добрый день.
Выгрузил атрибуты всех групп определенной ou
$Properties = @(«Name», «DisplayName», «Description», «info»);
$ADGroup = Get-ADGroup -SearchBase «OU=ХХХХХХХ» -Filter * -Properties $Properties | Select-Object $Properties;
$ADGroup | Sort-Object Name | Export-Csv -Path «C:\Temp\GroupExp.csv» -Delimiter «;» -Encoding utf8;
После чего скорректировал атрибуты в файле и сохранил его в кодировке UTF8
Подскажите пожалуйста, как обновить атрибутов из csv файла?
Вопрос снят, разобрался