当我的客户端位于PowerShell中的域C中时,将域A中的域A中的AD用户从域B中的AD组中删除

时间:2018-11-14 09:16:01

标签: powershell active-directory cross-domain

假设我在域A中有一个AD用户,该用户在域B中的AD组中,而我的客户端在域C中。
我想将用户从PowerShell中的组中删除,但是我真的不知道如何使用Remove-ADGroupMemberRemove-ADPrincipalGroupMembership解决此问题,因为我只能在那里传递一个域。

1 个答案:

答案 0 :(得分:0)

我假设域A和B不在同一个林中,但是它们是受信任的。

问题是您没有删除对用户的直接引用:您正在删除外部安全主体,该主体是与引用受信任域中的帐户的组相同的域中的对象。我在我写的文章What makes a member a member?中对此进行了更详细的讨论。

PowerShell cmdlet似乎都无法处理这些问题。但是您可以使用.NET的DirectoryEntry类来执行此操作。这是一个示例($username$groupname是帐户和组的名称):

$u = Get-ADUser -Server domainA.com $username
#Get the Foreign Security Principal object for the user
$fsp = Get-ADObject -Server domainB.com -Filter "objectSid -eq '$($u.SID)'"

#Get the group
$g = Get-ADGroup -Server domainB.com $groupname

#Get a DirectoryEntry for the group (which is what the [ADSI] notation creates)
$group = [ADSI]"LDAP://domainB.com/$($g.DistinguishedName)"

#Remove the FSP from the group
$group.Properties["member"].Remove($fsp.DistinguishedName)
$group.CommitChanges()