Get-ADComputer – получение данных о компьютерах в Active Directory
Продолжаем знакомиться с полезными командлетами PowerShell для работы с Active Directory. В прошлой статье мы поговорили о командлете Get-ADUser, позволяющем получать любую информацию об учетных записях пользователей AD. Сегодня речь пойдет о командлете Get-ADComputer и его использовании для получения данных об учётных записях компьютеров в Active Directory.
Поставим для себя практическую задачу: с помощью Powershell нужно получить список учетных записей компьютеров, не регистрировавшихся в домене более 120 дней (неактивные компьютеры) и отключить их.
Прежде чем приступить к работе с командлетом Get-ADComputer, необходимо подключить модуль Active Directory Module for Windows PowerShell.
Import-Module activedirectory
Совет. В PowerShell 3.0 (представлен в Windows Server 2012 ) и выше этот модуль подключается по умолчанию
Справка о параметрах командлета Get-ADComputer вызывается стандартно:
Get-Help Get-ADComputer
Чтобы получить информацию о конкретном компьютере укажем его имя с параметром -Identity:
Get-ADComputer -Identity SRV-DB01
Нас интересует время его последней регистрации в AD, но этой информация в выводе команды нет. Выведем все свойства компьютера в Active Directory:
Get-ADComputer -Identity SRV-DB01 -Properties *
Как мы видим, время последней входа в сеть (LastLogonDate)– 21.09.2015 0:20:17
Уберем всю лишнюю информацию, оставив только значение полей Name и LastLogonDate.
Get-ADComputer -identity SRV-DB01 -Properties * | FT Name, LastLogonDate -Autosize
Далее нужно поправить команду так, чтобы она выводила искомую информацию обо всех компьютерах домена. Для этого заменим параметр –Identity на -Filter:
Get-ADComputer -Filter * -Properties * | FT Name, LastLogonDate -Autosize
Чтобы вывести данные о компьютерах в определенном OU, воспользуемся параметром SearchBase:
Get-ADComputer -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -Filter * -Properties * | FT Name, LastLogonDate -Autosize
Отсортируем результаты запроса по времени последнего логина в сеть (поле LastLogonDate) с помощью команды Sort,
Get-ADComputer -Filter * -Properties * | Sort LastLogonDate | FT Name, LastLogonDate -Autosize
Итак, мы получили список компьютеров и время их последнего входа в домен Active Directory, теперь мы хотим заблокировать учетные записи компьютеров, не использовавшихся более 120 дней.
С помощью Get-Date получим в переменной значение текущей даты и уменьшим ее на 120 дней:
$date_with_offset= (Get-Date).AddDays(-120)
Полученную переменную с датой можно использовать в качестве фильтра запроса Get-ADComputer по полю LastLogonDate
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset } | Sort LastLogonDate | FT Name, LastLogonDate -Autosize
Таким образом, мы получили список компьютеров, не регистрировавшихся в сети более 120 дней. С помощью команды Disable-ADAccount отключим их.
Совет. В первый раз лучше протестировать результаты команды с помощью переключателя –WhatIf, благодаря которому команда не вносит никаких изменений, показывая, что произойдет при ее выполнении.
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false -whatif
Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $datecutoff} | Set-ADComputer -Enabled $false
Еще несколько полезных приемов по работе с командой Get-ADComputer
Получить количество всех учетных записей компьютеров в Active Directory:
Get-ADComputer -Filter {SamAccountName -like "*"} | Measure-Object
Выбрать все компьютеры с ОС Windows XP:
Get-ADComputer -Filter {OperatingSystem -like '*XP*'}
Выбрать только серверные системы:
Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server*' } -Properties OperatingSystem | Select Name, OperatingSystem | Format-Table -AutoSize
Результаты выполнения команды можно выгрузить в текстовый файл:
Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server*' } -Properties OperatingSystem | Select Name, OperatingSystem | Format-Table -AutoSize C:\Script\server_system.txt
Или CSV файл:
Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem,OperatingSystemServicePack | Export-CSV All-Windows.csv -NoTypeInformation -Encoding UTF8
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.