Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] удаление пользователя со всех групп за исключением Domain Users

Ответить
Настройки темы
PowerShell - [решено] удаление пользователя со всех групп за исключением Domain Users

Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Доброго дня!

Задача:
Организовать процедуру удаления пользователя со всех групп за исключением Domain Users при увольнении.

Нашёл скрипт:
Код: Выделить весь код
# Путь к файлу логов, не забудем создать его вручную. Не имеет смысла создавать его скриптом
$logfile = "C:\logs\user-groups-log.txt"

# Отключаем запрос на подтверждение при удалении из групп, и вывод ошибок.
$ConfirmPreference = "None"
$ErrorActionPreference = "SilentlyContinue"

# Запишем в лог время начала работы скрипта для удобства поиска по дате
Write-Output "Дата удаления: $(Get-Date -Format F)" >> $logfile
Write-Output "" >> $logfile

# Подключаем модуль ActiveDirectory
Import-Module ActiveDirectory

# Находим всех отключенных пользователей
$users = Get-ADUser -Filter 'Enabled -eq $false'

# И для каждого из них выполняем цыкл
foreach ($user in $users) {

# Если пользователь состоит более чем в одной группе (чтобы не выполнять с теми, кого обработал скрипт ранее)
if ((Get-ADPrincipalGroupMembership -Identity $user).Count -gt 1) {

# Записываем имя и логин пользователя, а также список его групп в лог файл
Write-Output ($user.Name +" - "+ $user.samAccountName)  >> $logfile
Get-ADPrincipalGroupMembership -Identity $user | Format-Table Name,distinguishedName  >> $logfile

# И удаляем его из этих групп исключая Domain Users
Remove-ADPrincipalGroupMembership -Identity $user -MemberOf $(Get-ADPrincipalGroupMembership -Identity $user | Where-Object {$_.DistinguishedName -ne 'CN=Domain Users,CN=Users,DC=domain,DC=test'})

    }
}

# Для пользователей, которые находятся  только в одной группе (скорее всего это Domain Users) мы не делаем ничего. Так же прошу обратить внимание, если у вас в домене практикуется смена групп по умолчанию, то в скрипт стоит добавить строчку, которая изменить значение атрибута primaryGroupID для каждого выбранного пользователя на 513 (Domain Users). Что собственно повлияет на время выполнения скрипта.
Вставил в файл PS1, запустил его и вылезла ошибка:

Отсутствует закрывающая ")" в выражении.
C:\Users\**\Desktop\Disable_Group.ps1:29 знак:1
+ <<<< Remove-ADPrincipalGroupMembership -Identity $user -MemberOf $(Get-ADPri
ncipalGroupMembership -Identity $user | Where-Object {$_.DistinguishedName -ne
'CN=Domain Users,CN=Users,DC=domain,DC=test'})
+ CategoryInfo : ParserError: (CloseParenToken:TokenId) [], Parse
Exception
+ FullyQualifiedErrorId : MissingEndParenthesisInExpression

Сам в языке смысле мало. Связаться с автором не могу. Помогите, пожалуйста, как его поправить.

Отправлено: 11:15, 13-10-2014

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Проблем в скрипте - нет, скорее всего просто неправильно скопирован скрипт.

Отправлено: 11:24, 13-10-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Странно, специально удалил и вставил снова все (){}"" '' на английской раскладке, но не помогло, всё равно говорит, что отсутствует закрывающая скобка )

Отправлено: 12:38, 13-10-2014 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Скриншот приведите : Get-Content C:\Users\**\Desktop\Disable_Group.ps1

Отправлено: 12:50, 13-10-2014 | #4


Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Безымянный.jpg
(319.9 Kb, 12 просмотров)

Сделал, только кракозябры почему-то.

Отправлено: 13:59, 13-10-2014 | #5


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Вот и ответ, что не осилили сохранить файл в правильной кодировке.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:07, 13-10-2014 | #6


Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Перекодировал в OEM866.
Теперь другая ошибка:

В строке, начинающейся с:
C:\Users\***\Desktop\Disable_Group.ps1:25 знак:31
+ Write-Output ($user.Name +" - <<<< "+ $user.samAccountName) >> $logfile,
отсутствует терминатор: ".
C:\Users\Zatsepin\Desktop\Disable_Group.ps1:73 знак:1
+ <<<<
+ CategoryInfo : ParserError: (+ $user.samAcco...gnature block
:String) [], ParseException
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

Отправлено: 14:23, 13-10-2014 | #7


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Как все же упорно сопротивляетесь правильно скопировать скрипт. TerminatorExpectedAtEndOfString - проблема с форматом кавычек.

ЗЫ. Попросите системного администратора скопировать скрипт правильно.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:36, 13-10-2014 | #8


Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Разобрался!
Оказывается апострафы ' надо вставлять в те места, где ошибки даёт))
Спасибо!

Отправлено: 14:58, 13-10-2014 | #9


Пользователь


Сообщения: 54
Благодарности: 1

Профиль | Отправить PM | Цитировать


Kazun,
А вы не подскажите как можно сделать так, чтобы скрипт искал отключенные записи не во всём домене, а в определённом орг юните?

Отправлено: 15:49, 13-10-2014 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] удаление пользователя со всех групп за исключением Domain Users

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление всех разделов в ветке реестра "Interfaces" за исключением одной. intelem Скриптовые языки администрирования Windows 5 18-01-2013 20:29
2008 R2 - Удаление Domain Policy pokul Windows Server 2008/2008 R2 0 20-03-2012 14:30
PowerShell - [решено] Удаление пользователя из групп forsem Скриптовые языки администрирования Windows 3 29-11-2011 21:43
2008 R2 - [решено] Domain users и административные шары: откуда взялся доступ??? VladDV Windows Server 2008/2008 R2 12 22-05-2010 14:59
EFS + Domain Users EndErr Microsoft Windows NT/2000/2003 5 17-01-2008 14:34




 
Переход