Powershell 如何让用户脱离广告组用户是其中的一部分

Powershell 如何让用户脱离广告组用户是其中的一部分,powershell,active-directory,Powershell,Active Directory,当用户在人力资源数据库中被命名时,我们正试图将用户从所有广告组中删除。我已经解决了用户帐户的终止问题,但是我们如何使用powershell将该特定用户作为我们所有分配组的成员。在从ActiveDirectory中删除ADUser对象之前,请检查其.MemberOf属性,然后使用Remove-ADGroupMembercmdlet运行这些组。要开始,您需要获取用户的memberOf和用户的DiscrimitedName 在下面的示例中,我通过用户的登录名(samaccountname)获取用户。只

当用户在人力资源数据库中被命名时,我们正试图将用户从所有广告组中删除。我已经解决了用户帐户的终止问题,但是我们如何使用powershell将该特定用户作为我们所有分配组的成员。

在从ActiveDirectory中删除
ADUser
对象之前,请检查其
.MemberOf
属性,然后使用
Remove-ADGroupMember
cmdlet运行这些组。

要开始,您需要获取用户的
memberOf
和用户的
DiscrimitedName

在下面的示例中,我通过用户的登录名(
samaccountname
)获取用户。只要返回正确的用户,您就可以使用所需的任何属性:

$testUser = "Test User"

$user = Get-ADUser -filter {Samaccountname -eq $testUser} -Properties memberof, distinguishedName
$Groups = $user.MemberOf
$DN = $user.DistinguishedName
然后,为了将用户从其当前成员身份中删除,您可以将其放入
foreach

foreach($group in $groups)
{
    Remove-ADGroupMember -Members $DN -Identity $group -Confirm:$false
}

-Confirm:$false
用于抑制有关删除的警告。您可能希望在测试过程中删除该部分,许多人会告诉您查看用户的
memberOf
属性。这在大多数情况下都很管用

但是,
memberOf
仅显示林中任何域上作用域为“通用”的组,或同一域上的“全局”组。它不会显示具有“域本地”作用域的组(无论域如何),也不会显示其他域上的“全局”组

为确保找到该用户所属的所有组,您需要在林中的每个域中搜索该用户所属的组:

Import-Module ActiveDirectory

$user = Get-ADUser "theuser"

$domains = (Get-ADForest).Domains
$groups = New-Object System.Collections.ArrayList

foreach ($domain in $domains) {
    $groups.AddRange(@(Get-ADGroup -filter {member -eq $user.DistinguishedName} -Server $domain))
}
然后,
$groups
具有组列表,您可以使用
Remove ADGroupMember
将用户从这些组中删除

同样,这仅与您相关,如果您:

  • 在林中有多个域,和/或
  • 使用“域本地”组

  • 到目前为止你做了哪些尝试,结果如何?