Чистим Active Directory от "мёртвых душ"
Привет!
Сменил место работы и пришёл после нескольких "админов". Благодаря действиям моим теперешних коллег, ситуация не настолько печальна, как могла бы быть.
Необходимо убрать несуществующих пользователей и ПК, деактивировать и перенести в карантин.
ПК, отсеять всех, которые включены и не логинились больше 90 дней. В переменной $d можно указать любое количество дней:
Get-ADComputer -filter {(enabled -eq "true") -and (lastlogondate -le $d)} -properties cn,lastlogondate
Автоматическое отключение и перенос специально не автоматизировал, потому что это операция, которая проводится не чаще 1 раза в месяц. Мало того, необходимо вручную пересмотреть все объекты, чтобы убедиться, что этот объект действительно ненужный. Но, никто не мешает дописать в строке:
Пользователи, которые включены и не логинились более 90 дней. Также, как и в предыдущем скрипте, можно указывать любое количество дней. Также, не воспринимаются служебные "пользователи" почтовой системы Exchange, а также, пользователи общих папок и доступа к почте:
$ExchangeOU = "OU=Exchange,OU=Groups,OU=City,DC=Organization,DC=local"
$OldUsers = Get-ADUser -filter {(enabled -eq "true") -and (lastlogondate -le $d)} -properties cn,lastlogondate
foreach ($user in $OldUsers)
{
if (!($User.distinguishedName).contains($ExchangeOU))
{ $User.UserPrincipalName + " : " + $User.distinguishedName + " : " + $User.LastLogonDate }
}
Найти пользователей, которые отключены, но не находятся в OU для отключённых пользователей:
$DiasabledUsers = Get-ADUser -Filter {(enabled -eq "false")}
foreach ($user in $DiasabledUsers)
{
#$User.DistinguishedName
if (!($User.distinguishedName).contains($InactiveUserOU))
{ $User.UserPrincipalName + " : " + $User.distinguishedName + " : " + $User.LastLogonDate}
}
Тут можно было бы и перенести пользователей, но, опять, есть служебные пользователи, которых перемещать нельзя, но они постоянно находятся в выкл. состоянии.
Как проверить, есть ли объекты (компьютеры) в Active Directory с одинаковыми SID-ами? Повторяющиеся SID-ы - настоящая проблема, её не видно, но при каждом шаге настройки или установки возникают всё новые и новые ошибки. Зачастую, повторяющиеся SID-ы возникают после разворачивания виртуальной машины на гипервизоре, шаблон которой был неправильно создан.
for ($i=0; $i -le $Comps.count;$i++)
{
if ($Comps[$i] -eq $Comps[$i-1])
{
$Comps[$i]
}
}
Также, очень советую почитать блог с примерами замечательного человека: Mike Griffin Home Blog
закрытие ФОП
- Войдите на сайт для отправки комментариев
- Версия для печати
Забыл указать в самом начале статьи, что при выполнении данных скриптов в консоли PowerShell на контроллере домена, необходимо консоль запускать от имени администратора и подгрузить модуль ActiveDirectory: