Вот такой есть скрипт, попытался собрать его из 2х отдльных, которые нашел в интернете.
Задача очень простая- найти все отключенные уч.записи в домене AD, назначить им группу по умолчанию "Пользователи домена" и исключить из всех прочих.
# Определяем текущую дату
$dt = Get-Date -Format "dd-MM-yyy"
# Задаем путь к логу и дату отработки
$logfile = "C:\logs\user-groups-log-$dt.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
Set-ADUser -Identity $user -Replace @{primarygroupid='513'}
# И удаляем его из групп исключая группу Пользователи домена
Remove-ADPrincipalGroupMembership -Identity $user -MemberOf $(Get-ADPrincipalGroupMembership -Identity $user | Where-Object {$_.DistinguishedName -ne 'CN=Пользователи домена,CN=Users,DC=moscorp,DC=local'})
}
}
# Для пользователей, которые находятся только в одной группе (скорее всего это Domain Users) мы не делаем ничего.
# Так же прошу обратить внимание, если у вас в домене практикуется смена групп по умолчанию, то в скрипт стоит добавить строчку,
# которая изменить значение атрибута primaryGroupID для каждого выбранного пользователя на 513 (Domain Users).
# Что собственно повлияет на время выполнения скрипта.
Попытался запустить скрипт. В Редакторе powerShell ISE мигает курсор, лог файл пишется, домен большой поэтому дожидаться окончания выполнения не стал.
Интересует мнение "бывалых" - все ли правильно сделано?