PowerShell: 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

Get-Help Get-ADComputerЧтобы получить информацию о конкретном компьютере укажем его имя с параметром Identity:

Get-ADComputer -Identity SRV-DB01

Get-ADComputer -IdentityНас интересует время его последней регистрации в AD, но этой информация в выводе команды нет. Выведем все свойства компьютера в Active Directory:

Get-ADComputer -Identity SRV-DB01 -Properties *

Get-ADComputer все параметры компьютера в Active DirectoryКак мы видим, время последней входа в сеть (LastLogonDate)– 21.09.2015 0:20:17

Уберем всю лишнюю информацию, оставив только значение полей Name и LastLogonDate.

Get-ADComputer -identity SRV-DB01 -Properties * | FT Name, LastLogonDate -Autosize

Табличное представление Get-ADComputer Далее нужно поправить команду так, чтобы она выводила искомую информацию обо всех компьютерах домена. Для этого заменим параметр –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

Сортировка по полю lastlogondate

Итак, мы получили список компьютеров и время их последнего входа в домен Active Directory, теперь мы хотим заблокировать учетные записи компьютеров, не использовавшихся более 120 дней.

С помощью Get-Date получим в переменной значение текущей даты и уменьшим ее на 120 дней:

$date_with_offset= (Get-Date).AddDays(-120)

Get-Date adddaysПолученную переменную с датой можно использовать в качестве фильтра запроса 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


Предыдущая статья Следующая статья

Комментариев: 19 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)