当 $Group 包含来自其他域的主体时,Get-ADGroupMember $Group 失败

Rya*_*ies 7 windows powershell active-directory

我注意到,当我使用 Powershell 获取 Active Directory 域安全组的组成员身份时,Powershell cmdletGet-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
Run Code Online (Sandbox Code Playgroud)

我已尝试指定-server $DC参数,以便 cmdlet 以特定 DC 为目标,然后在重现错误时检查该 DC 上的安全日志,并且没有生成相关的安全失败审核。我打开了键中的所有诊断注册表项services\NTDS\Diagnostics,这也不会在目录服务日志中产生任何有趣的内容。

如果我从 MyGroup 中删除驻留在另一个域中的组成员,则该 cmdlet 工作没有问题。

有趣的是,我注意到如果我在 DC 本身本地运行该命令,它会起作用。但是,当我使用相同的用户帐户(他是域管理员)从成员服务器远程运行命令时,它会失败。

知道出了什么问题吗?

Rya*_*ies 11

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.............
.........
Run Code Online (Sandbox Code Playgroud)

将注意力转向“票证标志”字段。缺了点什么。此票不可转发

为什么机票不能转发?

代表团

我取消选中该复选框,使用 刷新我的 Kerberos 票证klist purge,通过执行任何需要获取新 tgt 的网络活动来获取新的 tgt(如果我还没有),(这gpupdate是一个很好的例子,)再次检查 TGT,然后我注意到它现在包含了可转发标志。

现在,Powershell cmdlet 在成员服务器上按预期工作。

当该组包含来自另一个域的安全主体(用户或组)时,将返回必须跟踪的引用。为了追踪该推荐,ADWS 必须冒充发起原始呼叫的用户。如果在该用户帐户上禁用了 Kerberos 委派,则不会发生模拟/委派。