Get-ADComputer: примеры вывода данных о компьютерах Active Directory
Добры день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами разобрали ситуацию, когда не открывается пуск Windows 10, в итоге было рассмотрено свыше 8 методов по устранению. Идем вперед и сегодня я хочу вас научить получать информацию, о компьютерах Active Directory через PowerShell. Мы разберем огромное количество сценариев применения командлета Get-ADComputer с ключами, фильтрами и различными конструкциями.
За что отвечает командлет Get-ADComputer?
Когда ваша инфраструктура предприятия построена на базе Active Directory, то вы рано или поздно придете к задаче по получению различных данных о учетных записях компьютеров, проще говоря по серверам и рабочим станциям. PowerShell для этой задачи подходит лучше всего, так как он быстрее, позволяет автоматизацию и многое другое. Для этого в PowerShell есть командлет Get-ADComputer.
Простой пример использования Get-ADComputer, предположим, что вам нужно получить:
- Полный список учетных записей компьютеров в AD или конкретном организационном подразделении (OU)
- Получить информацию по атрибутам компьютера и сделать по ним выгрузку
- Найти все неактивные компьютера
- Найти все новые компьютеры в Active Directory
- Найти все выключенные компьютеры
- Поиск компьютеров по операционной системе
- Многое другое
Как работать с командлетом Get-ADComputer
Для того, чтобы начать работать с командлетом Get-ADComputer, вы должны:
- Либо это делать на контроллере домена, где уже есть все нужные оснастки
- Либо вы должны установить RSAT в случае с клиентскими ОС, например на Windows 11 или установить модуль в диспетчере серверов на Windows Server
Установка модуля Active Directory на клиентских ОС
Если вы работаете на контроллере домена, то вам достаточно просто ввести Get-ADComputer, нужный модуль подключиться автоматически. Если мы говорим про клиентские операционные системы, то ставим RSAT по инструкции или начиная с Windows 10 вы можете поставить модуль через команду:
и далее в оснастке PowerShell введите:
Установка модуля Active Directory на Windows Server
Когда на сервере нет модуля Active Directory, то при попытке его импортировать вы получите ошибку:
Чтобы это поправить введите с оснастке PowerShell:
Add-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature
Либо вы можете это сделать через графический интерфейс оснастки "Диспетчер серверов".
Параметры фильтров Get-ADComputer
Для поиска и извлечения нескольких компьютеров используйте параметры Filter или LDAPFilter. Параметр Filter является общим параметром среди многих команд ActiveDirectory. Он позволяет указать условия, которым должна соответствовать учетная запись для ее возврата. Если Identity параметр не используется, необходимо использовать Filter параметр.
- -eq - Равно
- -ne - Не равно
- -gt - Лучше чем
- -ge - Больше или равно
- -lt - Меньше чем
- -le - Меньше или равно
- -like - Поиск с подстановочными знаками
- -notlike - Поиск подстановочных знаков с отрицанием
- -and - И
- -or - Или
Примеры использования командлета Get-ADComputer
Если вы впервые работаете с командами Get-ADComputer, и под рукой нет готовых примером, то вы можете их посмотреть в справке. Для этого введите команду:
В первом примере мы с вами получим базовую информацию о конкретном доменном компьютере или сервере. в моем примере это будет компьютер с именем 5ORG. Вводим команду:
На выходе вы увидите его расположение в DistinguishedName, статус его активности, SamAccountName, SID и ObjectGUID.
DNSHostName : 5org.root.pyatilistnik.org
Enabled : True
Name : 5ORG
ObjectClass : computer
ObjectGUID : ed7d9f38-7be0-4e81-bb8b-c17d445a35a8
SamAccountName : 5ORG$
SID : S-1-5-21-4284852150-1823218374-53464103-2106
UserPrincipalName :
Согласитесь, что этого мало и нужно больше информации. Попросим Get-ADComputer вывести все свойства, которые есть у объекта компьютер. Для этого добавляем ключ -Properties. Вводим команду:
"*" - Означает, что нужно вывести все.
Из полезного тут:
- Description - Описание
- IPv4Address - IP-адрес
- lastLogon
- LastLogonDate - Время последнего входа в сеть
- OperatingSystem - Версия ОС
- whenCreated - Когда создан
- Многое другое
Как видите свойств много, давайте я покажу вам как вы можете сами выбирать те свойства которые вы хотите выводить. Давайте я выведу дату создания, время последнего входа, имя компьютера, его статус (активный/отключенный) и Ip-адрес. Для этого:
Иногда бывает ситуация, что нужно обратиться к определенному контроллеру домена с запросом, для этого есть ключ -Server:
Как видите я обратился к двум разным контроллерам домена. Данная возможность будет вам весьма полезна, когда у вас в лесу несколько доменов Active Directory.
Фильтры в Get-ADComputer
Теперь предположим, что вам необходимо получить информацию, о дате создания, времени входа, версии ОС, имени и статусу для всех компьютеров в домене. Тут мы уже будем использовать фильтры. Фильтры нужны для массовых запросов.
- Как посмотреть все компьютеры в домене со свойствами через использование фильтров:
Get-ADComputer -Filter * -Properties Name, whenCreated, OperatingSystem, LastLogonDate | FT Name, whenCreated, OperatingSystem, LastLogonDate, Enable -Autosize
или
- Чтобы ограничить вывод определенным количеством элементов, воспользуйтесь параметром -ResultSetSize. В примере будет выведено 3 элемента.
- Запросим в фильтре точное совпадение с именем
- Давайте теперь скажем. что покажи мне компьютеры, где в имени есть DC
- Давайте теперь скажем. что покажи мне компьютеры, где в имени есть DC и нужными свойствами Name, IPv4Address, Enabled, DNSHostName
- Еще вариант вывода информации, о всех компьютерах по разным критериям и сортировкой по имени.
или еще проще:
- Выводим список всех компьютеров в домене у которых операционная система Windows Server, так же возьмем описание lastLogon, whenCreated, DistinguishedName и чтобы учетная запись компьютера была активной.
- Как вывести все компьютеры без виртуальных имен. таких как роли DFS или инстансы в SQL, они часто имеют в поле описания "Failover cluster virtual network name account".
- Если нужно обратиться к конкретному OU, то можно использовать ключ -SearchBase.
- добавим экспорт в CSV файл весь список компьютеров Active Ditectory, чтобы потом проще было с ним взаимодействовать ( Читайте так же как разделить CSV по столбцам).
- Еще приведу примеры фильтров. Давайте выведем все компьютеры у которых операционная система не Windows 11 10.0 (22000).
- Теперь давайте найдем все компьютеры, которые не появлялись в сети более 45 календарных дней. Для этого такая конструкция:
$Date = (Get-Date).AddDays(-45)
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonDate -gt $date} | Sort LastLogonDate (или | Sort Name) | FT Name, LastLogonDate -Autosize
- Далее вы данный список можете полученных компьютеров можете заблокировать, это нормально и позволит держать базу Active Directory в надлежащем состоянии.
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonDate -gt $date} | Sort LastLogonDate | Set-ADComputer -Enabled $false -whatif
- Получаем список компьютеров имеющие изменения на 15 мая 2022
- Как вывести список компьютеров с нужными или всеми свойствами, созданными до 1 мая 2022 года.
Where-Object -Property Created -LT (Get-Date -Year 2022 -Month 05 -Day 01) | FT Name
Не забываем, что вы можете сортировать выводить любые свойства:
Get-ADComputer -Filter * -Properties * | `
Where-Object -Property Created -LT $date| `
select Name, Created | ft
- Теперь давайте разберемся, как вывести все отключенные записи компьютеров в домене, сразу оговорюсь, что как я и показывал выше вы можете это делать для конкретной OU или домена, указывая нужный сервер для запроса.
- Теперь логично, что вы хотели бы иметь понимание, сколько вообще активных компьютеров в домене.
- Можно это сделать в определенной OU
- Можно вывести количество компьютеров с Windows 10 например.
- Чтобы найти все компьютеры имена которых начинаются с W10.
- Получить список компьютеров созданных после 1 января 2020
- Получаем список компьютеров у которых операционная система не Windows Server 2016.
- Выводим компьютеры с Windows Server 2012 и Windows Server 2019