PowerShell: Get-ADComputer — получение данных о компьютерах в Active Directory

Прежде чем приступить к работе с командлетом Get-ADComputer, необходимо подключить модуль Active DirectoryModule 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

Источние