Поиск неиспользуемых аккаутов пользователей и компьютеров в Active Directory
Довольной частой задачей, которую приходится выполнять администратору Active Directory, является формирование списков отключенных или неактивных учетных записей и компьютеров, либо списков учеток с просроченными паролями. Для этого можно использовать как сохраненные LDAP запросы в консоли ADUC , так и уже знакомые нам командлеты PowerShell Get-ADUser , Get-ADObject или Get-ADComputer , однако создание правильного фильтра для данных команд может вызывать определенные затруднения. К счастью в модуле PowerShell для ActiveDirectory есть более удобный командлет для выполнения таких задач — Search-ADAccount . Рассмотрим примеры использования командлета Search-ADAccount для типовых задач.
Данный компонент также может быть включен командой:
Запустите консоль PowerShell и импортируйте модуль Active Directory для PowerShell:
Перечислим список наиболее интересных для нас ключей командлета Search-ADAccount
Ключ Search-ADAccountОписание -AccountDisabled
Поиск отключенных учетных записей-AccountExpired
Учетные записи с просроченным сроком действия-AccountExpiring [-DateTime DateTime] [-TimeSpan TimeSpan]
Учетные записи которые просрочатся в течении определенного периода (-TimeSpan) или в определенную дату(-DateTime)-AccountInactive [-DateTime DateTime] [-TimeSpan TimeSpan]
Учетные записи, не регистровавшиеся в домене начиная с определенной даты(-DateTime) или в течении определенного периода времени (-TimeSpan)
-LockedOutУчетные записи, заблокированные парольной политикой -PasswordExpiredУчетные записи, пароль которых просрочен-PasswordNeverExpires
Учетные записи, у которых установлен атрибут PasswordNeverExpires Примечание . Отметим, что по умолчанию командлет Search-ADAccount выполняет поиск по пользователем и компьютеров одновременно. Чтобы искать только по пользователям или компьютерам, нужно использовать ключ ComputersOnly или UsersOnly соответственно.
К примеру, выведем список отключенных учетных записей во всем домене:
Search-ADAccount -UsersOnly –AccountDisabled
Ограничить область поиска определенным контейнером (OU) Active Directory можно так:
Search-ADAccount -UsersOnly –AccountDisabled –searchbase «OU=Admins,OU=Accounts,DC=winitpro,DC=loc»
Search-ADAccount -UsersOnly -AccountDisabled -searchbase «OU=Admins,OU=Accounts,DC=winitpro,DC=loc»|ft -AutoSize
Либо, если нужно получить список заблокированных пользователей, содержащий только определённые атрибуты пользователей и представить в виде графической таблицы с возможностью сортировки, выполните:
Search-ADAccount -UsersOnly AccountDisabled |sort LastLogonDate | Select Name,LastLogonDate,DistinguishedName |out-gridview -title «Disabled Users»
Список заблокированных учетных записей пользователей:
Search-ADAccount -UsersOnly –LockedOut
Список учетных записей пользователей, неактивных в течении 60 дней:
$timespan = New-Timespan –Days 60
Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan
Чтобы посчитать количество таких учеток:
Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan | Measure
Список компьютеров, которые не регистрировавшихся в сети в течении последних 90 дней.
Search-ADAccount -AccountInactive –ComputersOnly -TimeSpan 90
Либо с определенной даты:
Search-ADAccount -AccountInactive -ComputersOnly -DateTime ‘1/1/2017’|Select Name,LastLogonDate| ft
Для выгрузки данных в CSV воспользуйтесь такой командой:
Поиск неактивных пользователей в Active Directory
Поиск неактивных пользователей в Active Directory
Добрый день уважаемые читатели и подписчики, продолжаем с вами изучение возможностей Powershell и Active Directory. Как вы помните у нее все учетные записи пользователей и компьютеров, находятся в базе данных NTDS.dit, все здорово и централизованно. Когда в компании больше одного системного администратора, может получиться ситуация, что в ней накапливается мусор и лишние учетные данные. Все мы люди и какие-то вещи можем забывать, а в какие-то моменты нас могут отвлечь, что приведет, так же к забыванию важной информации. И приходим, мы к тому, что в Actvie Directory накапливаются не активные пользователи (уволенные или забытые), в любом случае, хороший системный администратор должен их выявлять, отключать и дальше по желанию удалять, чем мы и займемся.
Как найти устаревшие учетные записи пользователей
Через оснастку ADUC
В прошлый раз я вам уже приводил пример использования оснастки Active Directory Пользователи и компьютеры, через которую мы искали пропавшие компьютеры в локальной сети, которые не появлялись уже месяц. Сейчас сделаем все то же самое и с пользовательскими учетными записями. У меня AD на Windows Server 2012 R2, открываем ADUC, для этого нажмите WIN+R и введите dsa.msc.
Далее переходите в пункт Сохраненные запросы, данный пункт появился еще в 2008 версии. Щелкаем по нему правым кликом и выбираем Создать > Запрос.
В открывшейся форме запроса задайте:
- Имя запроса > у меня это потерявшиеся пользователи
- Описание при необходимости
- Корень запроса > тут можно оставить весь домен, либо же конкретизировать на нужном OU
После чего жмем кнопку запрос.
На вкладке пользователи видим пункт «Число дней со времени последнего входа в систему» я для примера поставил 60 дней.
В итоге вы получите нужный вам список, неактивных учетных записей сотрудников.
Через оснастку powershell
Все то же самое можно сделать и через Powershell. Сразу приведу код, задачей которого идет поиск неактивных пользователей, для этого я выбрал период 45 дней, отключение данных пользователей и перемещение в специально отведенную для этого OU.
- В первой строке вы объявляете переменную, в которой задаете срок поиска
- Создаем переменную и делаем выборку по последнему времени логина
- Перемещаем пользователей
Еще полезные вещи по работе с пользователем. Перед использованием ниже команд, нужно загрузить модуль Active Directory, через команду
Далее получаем справку по команде Get-ADUser
Теперь посмотрим на базовые параметры пользователя, через команду
Как видите не особо информативно, но из полезного есть SID учетной записи пользователя.
Более детально по свойствам можно посмотреть вот такой строкой.
Через такую конструкцию вы можете выводить конкретные поля.
Как видите способов получения списка неактивных пользователей Active Directory хватает, так, что выбирайте, то что вам по душе.
Поиск компьютеров по операционной системе в Active Directory
Поиск компьютеров по операционной системе в Active Directory
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов по системному администрированию Pyatilistnik.org. В прошлый раз мы с вами разобрали вопрос, почему у вас отсутствует в системе библиотека vcruntime140.dll и научились ее успешно устанавливать. В сегодняшней публикации я бы вас хотел научить производить поиск в Active Directory по компьютерам с определенной операционной системой. Я расскажу в каких ситуациях вам, это будет полезно.
Постановка задачи
Вы наверняка знаете, что с конца 2019 года компания Microsoft перестает в базовом варианте поддерживать операционные системы Windows Server 2008 R2 и Windows 7, останется только расширенная поддержка для корпоративных пользователей. Вам как системному администратору можете поступить задача, определить сколько у вас таких рабочих станций или серверов, доступны ли они по сети, когда последний раз обращались к контроллеру домена и были изменены их данные.
Второй вариант, когда вам необходимо найти компьютеры с определенными операционными системами, связан с лицензированием, чтобы понять сколько у вас используется.
Решение задачи
Так как у меня доменная инфраструктура и единой точкой получения информации является база Active Directory и это удобно. Получить данные мы можем тремя методами:
- Использование LDAP запроса к контроллеру домена
- Через оболочку PowerShell
- Через SCCM
Получение компьютеров через LDAP запрос
И так получить я хочу компьютеры у которых в качестве операционной системы выступает Windows Server 2008 R2. Для этого откройте оснастку «Active Directory Пользователи и компьютеры». В оснастке ADUC найдите раздел «Сохраненные запросы» и через правый клик по контейнеру, выберите пункт «Создать — Запрос«.
Задаете понятное имя LDAP запроса и нажимаем кнопку «Запрос«.
Выбираете «Пользовательский поиск», в поле выбираете «Компьютер — Операционная система».
В значении пишите Windows Server 2008 и нажимаете кнопку добавить.
Сохраняем настройки, нажимая кнопку «Ок».
В результате мы получили вот такой LDAP зарос:
На выходе вы получите список компьютеров с нужной вам операционной системой, у меня получилось 86 серверов, большая часть из них имеет статус отключен, об этом говорит стрелка вниз на значке. Так же удобно будет добавить столбец последнего изменения.
Получить список компьютеров по ОС из PowerShell
Запускаем оболочку PowerShell, для того чтобы получить список всех компьютеров с нужной операционной системой введите вот такую команду:
На выходе получите список из имени и версии ОС
Согласитесь, что это не информативно. Хочется, чтобы были данные:
- Имя
- Версию операционной системы
- Дату последнего обращения (LastLogonDate)
- Дату изменения (Modified)
- Статус (Включена/Отключена)
- Сетевая доступность (Отвечает на ping или нет)
Эту задачу я выполню с помощью вот такого кода, который я писал еще пару лет назад:
$Comps = Get-ADComputer -Filter < OperatingSystem -Like '*Windows Server 2008*' >-Properties OperatingSystem, LastLogonDate, Modified | Select Name, OperatingSystem, LastLogonDate, Modified, Enabled | Sort-Object Enabled # | Format-Table -AutoSize
foreach ($comp in $Comps)
<
$comp_info = $null
$comp_info = New-Object psobject -Property @ <"Name" = $comp.Name; "Ping" = $(Test-Connection -ComputerName $comp.Name -Quiet -Count 1 -Verbose -ErrorAction SilentlyContinue);`
«OperatingSystem» = $comp.OperatingSystem; «LastLogonDate» = $comp.LastLogonDate; «Modified» = $comp.Modified; «Enabled» = $comp.Enabled>
$comps2 += $comp_info
>
# Скрипт с сайта Pyatilistnik.org
$comps2 | select Name, OperatingSystem, LastLogonDate, Modified, Enabled, Ping | sort Ping | Format-Table -AutoSize
Если нужно выгрузить в файл, то просто добавьте в конце | Out-File C:\Scripts\Windows-Server.txt или для csv файла | Export-CSV All-Windows.csv -NoTypeInformation -Encoding UTF8
В итоге я получил вот такой замечательный текстовый файл, в котором я вижу, какой компьютер живой и отвечает по сети, а какой нет и когда он последний раз обращался к контроллеру домена.
Поиск компьютеров в SCCM
SCCM, это мощнейшее средство, которое позволяет вам получать любые данные. Переходим на вкладку «Мониторинг — Отчеты — Операционная система» и выберите там пункт «Компьютеры с Windows Server»
Выбираем коллекцию и нажимаем построить отчет.
На выходе вы получите отчет по вашим хостам. В принципе данную информацию можно получить и через запрос в SCCM, как это делать смотрите по ссылке.























