«Реферал был возвращен с сервера» в powershell при попытке использовать Remove-ADGroupMember - PullRequest
0 голосов
/ 10 марта 2020

Intro

У меня есть скрипт, который работает без проблем для пользователей в домене root. В основном он делает это

  1. Импортирует CSV пользователей
  2. Получает их отличительное имя
  3. Видит, существует ли их отличительное имя в списке отличительных имен в group
  4. Если их DN действительно находится в группе, удалите их из группы.

Issue

Однако я сталкиваюсь с проблемы при попытке удалить пользователей в дочернем домене из группы, расположенной в домене root.

Ошибка

Remove-ADGroupMember : A referral was returned from the server
At U:\powershell\AD\Remove_users_from_group.ps1:16 char:9
+         Remove-ADGroupMember $groupDN -Members $user -Confirm:$false  ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (CN=GroupA C=Domain,DC=com:ADGroup) [Remove-ADGroupMember], ADRe 
   ferralException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8235,Microsoft.ActiveDirectory.Management.Commands.RemoveADGroupMember

Код

$csv = Import-Csv -Path "users.csv" -Header 'Username'

$group = 'GroupA'
$groupDN = Get-ADgroup 'GroupA'| Select -Property DistinguishedName

$incount = 0
$notcount = 0

$members = Get-ADGroupMember $group -Server "domain.com" | Select -Property DistinguishedName

ForEach ($Username in $csv) {
    $user = $Username.Username
    $user = Get-ADUser $user -Server "child.domain.com" | Select -Property DistinguishedName
    if ($members -like $user){
        Remove-ADGroupMember $groupDN -Members $user -Confirm:$false -Server 'domain.com'
        #Set-ADObject -Identity $groupDN -Remove @{member=$($user)} 
        write-host "Removed:" $user
        $incount++
    } Else {$notcount++}
}

Write-host "Task complete"
Write-host "Users removed from" $group ":" $incount
Write-host "Users that were not in" $group ":" $notcount
$prompt = Read-Host -Prompt "Press enter to close"

1 Ответ

1 голос
/ 10 марта 2020

Реферал возвращается, когда D C не может делать то, что вы хотите сделать, но он знает, с кем вам нужно поговорить, чтобы сделать то, что вам нужно сделать. В этом случае это означает, что он не подключается к правильному домену, но Remove-ADGroupMember не в состоянии следить за рефералом. Поскольку вы не указываете параметр -Server для Remove-ADGroupMember, скорее всего, он подключается к любому домену, в который вы вошли. Решение состоит в том, чтобы просто использовать параметр -Server, чтобы заставить его общаться с правильным доменом, как вы это делали с Get-ADGroupMember.

Remove-ADGroupMember $groupDN -Members $user -Confirm:$false -Server "domain.com"

Я вижу еще одну проблему с вашим кодом: вы используете параметр -Recursive с Get-ADGroupMember, означающий, что он вернет пользователей, которые являются членами групп, где эта группа является членом $group. Но затем вы используете Remove-ADGroupMember для удаления пользователя из группы, как если бы он был прямым членом этой группы. Remove-ADGroupMember не удастся пользователям, которые не являются прямыми участниками.

...