2016-09-09 5 views
0

У меня есть следующая строка кода в файле PowerShell, предназначенная для удаления пользователя из всех групп Active Directory, начинающихся с символа @;PowerShell - Remove-ADGroupMember - Блокировка учетной записи администратора

Get-ADGroup -Filter 'name -like "@*"' | Remove-ADGroupMember -Members $UserID 

Это на самом деле работает отлично, и успешно удаляет их из правильных групп, однако сценарий блокирует мой учетной записи администратора каждый раз, когда он запущен. Weird!

Из-за траулинга в интернете какое-то время я подозреваю, что это связано с этим, «используя» мои токены аутентификации Kerberos (он использует слишком много, поскольку он запускается для каждой группы AD, начинающейся с @), или он думает Я пытаюсь сделать что-то злонамеренное, потому что я посылаю такое большое количество команд за короткое время?

Есть ли способ изменить эту строку кода, чтобы вместо запуска Remove-ADGroupMember для каждой отдельной группы @ в Active Directory она выполнялась только для групп, членом которых является пользователь? Или любые другие идеи?

спасибо.

ответ

0

Попробуйте это:

$groups = Get-ADPrincipalGroupMembership $user | where {$_.name -like "@*"} | select -expandproperty name 
foreach($group in $groups){ 
Remove-ADGroupMember -identity $group -Members $user 
} 

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

Не забудьте изменить $ user с именем пользователя или заполнить переменную заранее.

0

Хм, у меня нет инфраструктуры AD дома, но похоже, что ваш пример не имеет ничего определяющего $UserID.

+0

Hi Burt_harris. $ UserID уже определен еще в скрипте. Я могу ответить на него без проблем, поэтому переменная установлена ​​правильно. – haze1434

Смежные вопросы