Get-ADGroupMember $Group завершается ошибкой, когда $ Group содержит участников из других доменов
Я заметил, что когда я использую Powershell для получения членства в группе в группе безопасности домена Active Directory, командлет Powershell Get-ADGroupMember $Group
не удается с сообщением об ошибке:
PS C:\> get-adgroupmember MyGroup
get-adgroupmember : An operations error occurred
At line:1 char:1
+ get-adgroupmember MyGroup
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (MyGroup:ADGroup) [Get-ADGroupMember], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:8224,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember
Я попытался указать -server $DC
параметр, чтобы командлет предназначался для определенного контроллера домена, а затем я проверяю журналы безопасности на этом контроллере, поскольку я воспроизводю ошибку, и соответствующие проверки безопасности не генерируются. Я включил все записи реестра диагностики в services\NTDS\Diagnostics
ключ и это не производит ничего интересного в журналах службы каталогов либо.
Если я удаляю членов группы, которые находятся в другом домене, из MyGroup, командлет работает без проблем.
Интересно отметить, что если я запускаю команду локально на самом DC, она работает. Но когда я запускаю команду удаленно с рядового сервера, используя ту же учетную запись пользователя (которая является администратором домена), она терпит неудачу.
Есть идеи, что случилось?
1 ответ
Командлеты Powershell Active Directory, такие как Get-ADGroupMember
использовать веб-службы Active Directory (ADWS).
Заявление, такое как
"Это работает нормально, когда я запускаю команду локально на сервере, но не работает, когда я запускаю ее с удаленного сервера"
часто это красный флаг, указывающий на то, что основной проблемой является делегирование Kerberos.
Многие службы используют делегирование Kerberos, и ADWS не является исключением.
Итак, давайте посмотрим на мой билет на выдачу билетов Kerberos (TGT):
C:\> klist tgt
Current LogonId is 0:0x95ec6
Cached TGT:
ServiceName : krbtgt
TargetName (SPN) : krbtgt
ClientName : Administrator
DomainName : FABTOSO.COM
TargetDomainName : FABTOSO.COM
AltTargetDomainName: FABTOSO.COM
Ticket Flags : 0xe10000 -> renewable initial pre_authent name_canonicalize
Session Key : KeyType 0x12 - AES-256-CTS-HMAC-SHA1-96
: KeyLength 32 - 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00
StartTime : 4/21/2016 18:42:34 (local)
EndTime : 4/22/2016 4:42:34 (local)
RenewUntil : 4/28/2016 18:42:34 (local)
TimeSkew : + 0:00 minute(s)
EncodedTicket : (size: 1109)
0000 61 82 04 51 30 82 04 4d:a0 03 02 01 05 a1 0d 1b a..Q0..M........
0010 0b 46 41 42 54 4f 53 4f:2e 43 4f 4d a2 20 30 1e .FABTOSO.COM. 0.
0020 a0 03 02 01 02 a1 17 30:15 1b 06 6b 72 62 74 67 .......0...krbtg
0030 74 1b 0b 46 41 42 54 4f:53 4f 2e 43 4f 4d a3 82 t..FABTOSO.COM..
0040 04 13 30 82 04 0f a0 03:02 01 12 a1 03 02 01 02 ..0.............
.........
Обратите свое внимание на поле Ticket Flags. Чего-то не хватает. Этот билет не подлежит пересылке.
Почему билет не подлежит пересылке?
Я снимаю этот флажок, сбрасываю свои билеты Kerberos klist purge
получить новый tgt, выполнив любую сетевую активность, которая требует получения нового tgt, если у меня его еще нет, (gpupdate
хороший пример,) еще раз проверьте TGT, и я заметил, что теперь он включает флаг пересылки.
Теперь командлет Powershell работает должным образом с рядового сервера.
Когда группа содержит участников безопасности (пользователей или группы) из другого домена, возвращается реферал, который должен быть отслежен. Чтобы преследовать этого реферала, ADWS должен выдать себя за пользователя, сделавшего исходный вызов. Если делегирование Kerberos отключено для этой учетной записи пользователя, олицетворение / делегирование не может произойти.
Это поведение изменилось с последними обновлениями безопасности Windows Server.
- Изменения в делегировании билетов (TGT) через доверительные отношения в Windows Server (версия PFE)
- Обновления делегирования TGT через входящие доверительные отношения в Windows Server
- Невозможно подсчитать членство в группах с членами FSP после запуска netdom /EnableTGTDelegation: Нет
По умолчанию теперь по умолчанию отключено делегирование TGT через доверительные отношения лесов. Из-за этого Get-ADGroupMember завершится ошибкой в группах с участниками внешней безопасности между лесами, пока Microsoft не решит проблему. А пока можно использовать следующее решение:
Get-ADGroup -Properties member