我注意到,当我使用Powershell获取Active Directory域安全组的组成员资格时,Powershell cmdlet 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参数,以便该cmdlet以特定DC为目标,然后在重现该错误时检查该DC上的安全日志,并且不会生成相关的安全失败审核。 我打开了services\NTDS\Diagnostics项中的所有Diagnosticsregistry项,并且在目录服务日志中也没有产生任何有趣的内容。
如果我从MyGroup中删除驻留在其他域中的组成员,则该cmdlet不起作用。
有趣的是,我注意到如果我在DC上本地运行命令,它就可以工作。 但是,当我从成员服务器远程运行命令时,使用相同的用户帐户(谁是域pipe理员)失败。
任何想法有什么不对?
Active Directory Powershell cmdlet(如Get-ADGroupMember使用Active Directory Web服务(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............. .........
把你的注意力转向票标志字段。 缺了点什么。 这张票不能转发 。
为什么票不能转发?
我取消selectcheckbox,用klist purge我的Kerberos票据,通过执行任何types的networking活动,需要得到一个新的tgt,如果我还没有一个新的tgt( gpupdate是一个很好的例子),检查TGT再次,我注意到它现在包括可转换标志。
现在,Powershell cmdlet按照预期从成员服务器上运行。
当该组包含来自其他域的安全主体(用户或组)时,将返回一个必须被追踪的引用。 为了追查转介,ADWS必须冒充原始电话的用户。 如果在该用户帐户上禁用Kerberos委派,模拟/委派不会发生。