Так же как и с получением списка пользователей AD с Get-ADUser с помощью Powershell мы можем вернуть список компьютеров. Этот список может быть отфильтрован исключая или включая отключенные учетные записи, по-определенному OU, экспортированы в CSV и многое другое. Эти примеры, а так же множество других, вы можете увидеть в статье ниже.
Содержание[Скрыть]
Получение компьютеров
Команда, которая вернет список всех компьютеров в домене следующая:
1 |
Get-ADComputer -Filter * |
Команда точно выполнится на домен контроллере, так как все поддерживаемые серверные версии ОС устанавливают нужный модуль Powershell вместе с Active Directory (если вы только специально не отключали эту возможность). Если вы планируете выполнять команду с клиента на Windows 7 и выше, то такой модуль устанавливается вместе с RSAT (Remote Server Administration Tools). В отдельном случае может понадобится импортировать этот модуль следующей командой:
1 |
Import-Module ActiveDirectory |
Вы так же можете проверить, что этот модуль у вас установлен следующей командой:
1 |
Get-Module -Name ActiveDirectory |
В остальных случаях стоит смотреть на явные запреты на выполнение скриптов Powershell и чтения Active Directory.
Что бы вернуть данные по одному пользователю используется ключ Identity:
1 |
Get-ADComputer -Identity "AD1" |
Параметр Filter является обязательным. Вы можете вернуть дополнительные данные используя Properties:
1 |
Get-ADComputer -Filter * -Properties * |
Фильтрация вывода
У нас есть базовые свойства, которые фильтруются с помощью Filter. Это:
- DistinguishedName
- Enabled
- ObjectClass
- ObjectGUID
- SamAccountName
- SID
- UserPrincipalName
И ряд свойств, которые возвращаются с параметром Properties. Их можно фильтровать через дополнительные условия (конвейер, where-object, циклы). Имена этих свойств можно вернуть так:
1 |
Get-ADComputer -Filter * -Properties * | Get-Member -MemberType Properties | select name |
Использование Filter
Если вы планируете получить информацию по определенному доменному компьютеру, то вам нужно добавить условие. В примере ниже я возвращаю информацию только по компьютеру у которого имя равно «AD1»:
1 |
Get-ADComputer -Filter {Name -eq "AD1"} -Properties * |
Если нужно найти только компьютеры, которые содержат в имени определенные значения, то нужно использовать -like вместо -eq . В моем примере я ищу все компьютеры содержащие в имени «CL» (регистр не учитывается).
1 |
Get-ADComputer -Filter {Name -like "*CL*"} -Properties * |
Знаки * говорят, что в этих местах может быть еще текст. Такое написание «C*L» соответствовало бы логике: строка начинается с буквы «C», затем может быть еще текст завершающийся на «L».
Использование Properties
Свойства возвращаемые через ключ Properties можно фильтровать двумя способами.
Первый — указывать их явно. Например вы хотите вернуть список с датами создания учетных записей компьютеров домена, которые хранит свойство «Created». Это можно сделать так:
1 |
Get-ADComputer -Filter * -Properties Created |
Указать больше свойств можно через запятую. Например:
1 |
Get-ADComputer -Filter * -Properties Created,CN,CodePage |
Так же можно фильтровать через команду where-object. На примере ниже я получаю компьютеры со всеми свойствами, но созданные до 31 декабря 2019 года:
1 2 |
Get-ADComputer -Filter * -Properties * | ` Where-Object -Property Created -LT (Get-Date -Year 2019 -Month 12 -Day 31) |
Ограничить вывод определенными свойствами можно через Select:
1 2 3 4 |
$date = (Get-Date -Year 2019 -Month 12 -Day 31) Get-ADComputer -Filter * -Properties * | ` Where-Object -Property Created -LT $date| ` select Name, Created | ft |
Получение включенных и отключенных учетных записей
Используя свойства Enabled можно вернуть учетные записи активных и деактивированных записей. Так будут возвращены отключенные учетные записи:
1 |
Get-ADComputer -Filter {Enabled -eq $False} |
Получение компьютеров из определенных OU
Для работы с организационными единицами есть параметр -SearchBase. Мой домен контроллер называется «domain.local», а организационная единица «Moscow», следовательно, заполненный параметр будет выглядеть так:
1 |
-SearchBase "OU=Moscow,DC=domain,DC=local" |
Вместе с командой это получится так:
1 |
Get-ADComputer -Filter * -SearchBase "OU=Moscow,DC=Domain,DC=local" |
Если у вас несколько доменов или OU, которые нужно посмотреть, можно использовать циклы и массивы:
1 2 3 4 5 6 7 8 9 |
# Организационные единицы $ous = @('Moscow', 'SPB') # Домен $domain = 'DC=domain,DC=local' foreach ($ou in $ous){ $ou = "OU=$ou,$domain" Get-ADComputer -Filter * -SearchBase $ou } |
Ограничение вывода
Если у вас очень большой AD, то вывод всех компьютеров может быть долгим. Вы можете изменить это ограничив вывод с помощью ResultSetSize. Так я выведу только одну запись:
1 |
Get-ADComputer -Filter * -ResultSetSize |
Эскорт в CSV
Любой выведенный результат команды Get-ADComputer мы можем экспортировать в CSV. Для этого у нас есть командлет Export-CSV. На примере ниже я выгружаю информацию обо всех компьютеров домена в файл «C:adcomputers.csv»
1 |
Get-ADComputer -Filter * -Properties * | Export-CSV -Path "C:ADComputers.csv" -NoTypeInformation |
…
Ваш комментарий будет первым