Прежде чем приступить к работе с командлетом Get-ADComputer, необходимо подключить модуль Active DirectoryModule for Windows PowerShell.
Import-Module activedirectory
Справка о параметрах командлета Get-ADComputer вызывается стандартно:
Get-Help Get-ADComputer
Чтобы получить информацию о конкретном компьютере укажем его имя с параметром —Identity:
Get-ADComputer -Identity SRV-DB01
Нас интересует время его последней регистрации в AD, но этой информация в выводе команды нет. Выведем все свойства компьютера в Active Directory:
Get-ADComputer -Identity SRV-DB01 -Properties *
Как мы видим, время последней входа в сеть (LastLogonDate) —
Уберем всю лишнюю информацию, оставив только значение полей 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