Answer the question
In order to leave comments, you need to log in
Is everything correct in the script?
There is such a script, I tried to assemble it from 2 separate ones that I found on the Internet.
The task is very simple - find all disabled accounts in the AD domain, assign them the default group "Domain Users" and exclude them from all others.
# Определяем текущую дату
$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).
# Что собственно повлияет на время выполнения скрипта.
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question