Как найти компьютер в active directory

Обновлено 18.05.2022

AD logoДобрый день! Уважаемые читатели и гости одного из крупнейших IT блогов по системному администрированию Pyatilistnik.org. В прошлый раз мы с вами разобрали вопрос, почему у вас отсутствует в системе библиотека vcruntime140.dll и научились ее успешно устанавливать. В сегодняшней публикации я бы вас хотел научить производить поиск в Active Directory по компьютерам с определенной операционной системой. Я расскажу в каких ситуациях вам, это будет полезно.

Постановка задачи

Вы наверняка знаете, что с конца 2019 года компания Microsoft перестает в базовом варианте поддерживать операционные системы Windows Server 2008 R2 и Windows 7, останется только расширенная поддержка для корпоративных пользователей. Вам как системному администратору можете поступить задача, определить сколько у вас таких рабочих станций или серверов, доступны ли они по сети, когда последний раз обращались к контроллеру домена и были изменены их данные.

Второй вариант, когда вам необходимо найти компьютеры с определенными операционными системами, связан с лицензированием, чтобы понять сколько у вас используется.

Решение задачи

Так как у меня доменная инфраструктура и единой точкой получения информации является база Active Directory и это удобно. Получить данные мы можем тремя методами:

  1. Использование LDAP запроса к контроллеру домена
  2. Через оболочку PowerShell
  3. Через SCCM

хочу отметить, что первые два метода доступны всем, а последний, только тем организациям, где внедрен мега продукт System Center Configuration Manager

Получение компьютеров через LDAP запрос

И так получить я хочу компьютеры у которых в качестве операционной системы выступает Windows Server 2008 R2. Для этого откройте оснастку «Active Directory Пользователи и компьютеры». В оснастке ADUC найдите раздел «Сохраненные запросы» и через правый клик по контейнеру, выберите пункт «Создать — Запрос«.

Получение компьютеров через LDAP запрос

Задаете понятное имя LDAP запроса и нажимаем кнопку «Запрос«.

Создание запроса LDAP

Выбираете «Пользовательский поиск», в поле выбираете «Компьютер — Операционная система».

Поиск компьютеров по операционным системам

В значении пишите Windows Server 2008 и нажимаете кнопку добавить.

поиск компьютеров в Active Directory

Сохраняем настройки, нажимая кнопку «Ок».

Сохранение LDAP запроса

В результате мы получили вот такой LDAP зарос:

(&(objectCategory=computer)(objectClass=computer)(operatingSystem=Windows20Server20200820R2*))

Текст LDAP запроса

На выходе вы получите список компьютеров с нужной вам операционной системой, у меня получилось 86 серверов, большая часть из них имеет статус отключен, об этом говорит стрелка вниз на значке. Так же удобно будет добавить столбец последнего изменения.

Список компьютеров из Active Directory

Получить список компьютеров по ОС из PowerShell

Запускаем оболочку PowerShell, для того чтобы получить список всех компьютеров с нужной операционной системой введите вот такую команду:

Get-ADComputer -Filter { OperatingSystem -Like ‘*Windows Server 2008*’ } -Properties OperatingSystem | Select Name, OperatingSystem | Format-Table -AutoSize

На выходе получите список из имени и версии ОС

Поиск компьютеров AD через PowerShell

Согласитесь, что это не информативно. Хочется, чтобы были данные:

  • Имя
  • Версию операционной системы
  • Дату последнего обращения (LastLogonDate)
  • Дату изменения (Modified)
  • Статус (Включена/Отключена)
  • Сетевая доступность (Отвечает на ping или нет)

Эту задачу я выполню с помощью вот такого кода, который я писал еще пару лет назад:

$Comps = Get-ADComputer -Filter { OperatingSystem -Like ‘*Windows Server 2008*’ } -Properties OperatingSystem, LastLogonDate, Modified | Select Name, OperatingSystem, LastLogonDate, Modified, Enabled | Sort-Object Enabled # | Format-Table -AutoSize

$comps2 = @()

foreach ($comp in $Comps)
{
$comp_info = $null
$comp_info = New-Object psobject -Property @{«Name» = $comp.Name; «Ping» = $(Test-Connection -ComputerName $comp.Name -Quiet -Count 1 -Verbose -ErrorAction SilentlyContinue);`
«OperatingSystem» = $comp.OperatingSystem; «LastLogonDate» = $comp.LastLogonDate; «Modified» = $comp.Modified; «Enabled» = $comp.Enabled}
$comps2 += $comp_info
}

# Скрипт с сайта Pyatilistnik.org

$comps2 | select Name, OperatingSystem, LastLogonDate, Modified, Enabled, Ping | sort Ping | Format-Table -AutoSize

Поиск компьютеров в AD

Если нужно выгрузить в файл, то просто добавьте в конце | Out-File C:ScriptsWindows-Server.txt или для csv файла | Export-CSV All-Windows.csv -NoTypeInformation -Encoding UTF8

В итоге я получил вот такой замечательный текстовый файл, в котором я вижу, какой компьютер живой и отвечает по сети, а какой нет и когда он последний раз обращался к контроллеру домена.

Поиск компьютеров в SCCM

SCCM, это мощнейшее средство, которое позволяет вам получать любые данные. Переходим на вкладку «Мониторинг — Отчеты — Операционная система» и выберите там пункт «Компьютеры с Windows Server»

Поиск компьютеров в SCCM

Выбираем коллекцию и нажимаем построить отчет.

Как найти компьютеры по ОС через SCCM

На выходе вы получите отчет по вашим хостам. В принципе данную информацию можно получить и через запрос в SCCM, как это делать смотрите по ссылке.

Результат со списком компьютеров из Active Directory

На этом у меня все. С вами был Иван Семин. автор и создатель IT портала Pyatilistnik.org.

В этой статье мы рассмотрим, как ввести компьютер с Windows 10/11 или Windows Server 2022/2019/2016 в домен Active Directory.

Содержание:

  • Предварительные требования для присоединения Windows к домену
  • Вводим компьютер Windows в домен через классический интерфейс System Properties
  • Добавление Windows в домен через панель Settings
  • Добавить Windows в домен с помощью PowerShell
  • Предварительное создание учетной записи компьютера в домене

Предварительные требования для присоединения Windows к домену

Рассмотрим основные требования и подготовительные шаги, которые нужно выполнить на вашем компьютере для подключения его к домену Active Directory:

  • В домен можно добавить только следующие редакции Windows 10/11: Pro, Education, Pro for Workstations и Enterprise. Редакции Home не поддерживают работу в домене Active Directory;
  • Вы должны подключить ваш компьютер к локальной сети, из которой доступен хотя бы один контроллер домена AD. Предположим, что на вашем компьютере уже настроен IP адрес из локальной подсети, а в настройках DNS северов указаны IP адреса ближайших котроллеров домена (вы можете настроить параметры сетевого адаптера вручную или получить от DHCP сервера);
  • Проверьте, что ваш компьютер может отрезолвить имя домена и с него доступны контроллеры домена:
    ping contoso.com
    проверить доступность домена с компьютера с помощью ping
  • Время на компьютере не должно сильно расходится со временем на контроллере домена (плюс-минус пять минут). Корректное время нужно для выполнения Kerberos аутентификации;
  • Задайте имя вашего компьютера (hostname), под которым он будет добавлен в домен. По умолчанию Windows генерирует имя компьютера при установке, но лучше изменить его на что-то более осмысленное. Вы можете изменить имя компьютера
    Через классическую панель
    sysdm.cpl
    . Нажмите кнопку Change, укажите новое имя компьютера и нажмите OK (как вы видите, сейчас компьютера находится в рабочей группе Workgroup); задать имя компьютера Windows
    Также Можно изменить имя компьютера с помощью PowerShell команды:
    Rename-Computer -NewName "wks-test1"

    PowerShell команда Rename-Computer

После смены
hostname
нужно перезагрузить Windows.

Вводим компьютер Windows в домен через классический интерфейс System Properties

Вы можете добавить ваш компьютер в домен из классической панели управления Windows.

  1. Выполните команду
    sysdm.cpl
    и нажмите кнопку Change;
  2. В поле Member of переключите опцию на Domain и укажите имя вашего домена; Указать имя домена на компьютере Windows
  3. Появится запрос имени и пароля пользователя, которому делегированы административные права на добавление компьютеров в домен. Это может быть обычный пользователь AD (по умолчанию любой пользователь домена может присоединить до 10 устройств) или учетная запись с правами Domain Admins; пароль для ввода компьтера в домен
  4. После этого должна появится надпись Welcome to the contoso.com domain; добро пожаловать в домен
  5. Перезагрузите компьютер.

В Windows Server 2022/2019/2019 диалог System Properties для присоединения к домену AD можно открыть из Server Manager -> Local Server -> Domain.

загнать Windows Server в домен AD

После перезагрузки к компьютеру загрузить и применит доменные групповые политики, а вы может выполнить аутентификацию на компьютере с помощью учетной записи пользователя домена.

Добавление Windows в домен через панель Settings

В современных версиях Windows 10 и Windows 11 вы можете присоединить ваш компьютер в домен AD через панель Settings.

  1. Перейдите в раздел Settings -> Accounts -> Access work or school -> нажмите Connect (для быстрого перехода в этот раздел Setting можно использовать команду быстрого доступа: ms-settings:workplace);
  2. В открывшейся форме нажмите на ссылку Alternate actions: Join this device to a local Active Directory domain; подключить компьютер Windows к локальному домену AD

    Если ваш компьютер уже добавлен в домен, здесь будет надпись Connected to CONTOSO AD domain. компьютер уже в домене

  3. Укажите имя домена в форме Join a domain; указать имя домена, в который войти
  4. Затем укажите имя доменного пользователя и пароль.
  5. Пропустите следующий шаг с добавлением пользователя в администраторы (вы можете добавить пользователя в локальные админы с помощью GPO);
  6. Осталось перезагрузить компьютер, чтобы завершить добавление в домен. перезагрузить Windows

Добавить Windows в домен с помощью PowerShell

Для присоединения компьютеров к домену Active Directory можно использовать команду Powershell Add-Computer. Командлет позволяет ввести компьютер в домен с новым именем, а также позволяет сразу поместить учетную запись компьютера в определенный OU.

В самом простом случае для добавления в домен достаточно выполнить команду:

Add-Computer -DomainName contoso.com

Появится окно, в котором нужно указать свою учетную запись и пароль.

Команда Add-Computer для добавления компьютера в домен из PowerShell

Вы можете сразу поместить ваш компьютер в нужную OU. Для этого имя OU в формате DN (distinguishedName) нужно указать в параметре OUPath:

$OU ="OU=Computers,OU=SPB,OU=RU,DC=contosoc,DC=loc"
Add-Computer -DomainName contoso.loc -OUPath $OU -Restart

Ключ -Restart означает, что вы хотите перезагрузить Windows сразу после завершения команды добавления в домен.

Add-Computer поместить компьютер срузу в нужную OU

После перезагрузки вы можете проверить, что ваш компьютер теперь является членом домена Windows с помощью команды:

Get-WmiObject Win32_NTDomain

Команда вернули имя домена, сайта AD, IP адрес и имя контроллера домена, через который выполнен вход (Logon server)

Get-WmiObject Win32_NTDomain - получить информацию о домене и логон сервере

Также можно получить имя вашего домена с помощью команды:

systeminfo | findstr /B "Domain"

systeminfo - проверить что компьютер в домене

Вы можете добавить удаленный компьютер в домен. Для этого нужно указать имя компьютера в параметре -ComputerName:

Add-Computer -ComputerName wks-pc22 -DomainName contoso.com -Credential contosoAdministrator -LocalCredential wks-pc22Admin -Restart –Force

В новых версиях PowerShell Core 6.x и 7.x команда Add-Computer отсутствует в модуле Microsoft.PowerShell.Management.

Add-Computer: The term 'Add-Computer' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Suggestion [4,General]: The most similar commands are: Add-Computer, Stop-Computer, Get-ADComputer, New-ADComputer, Set-ADComputer, Add-Content, Rename-Computer, Add-Member.

Поэтому для добавления компьютера в домен, нужно запускать
powershell.exe
, а не pwsh.exe.

Также для добавления Windows в домен можно использовать утилиту netdom, но она требует установки пакета администрирования RSAT на клиентский компьютер и сейчас используется очень редко:

netdom join %computername% /domain:contoso.com /UserD:contosoadmin /PasswordD:pasS1234

Если вам нужно вывести компьютер из домена и вернуть его в рабочую группу, выполните команду PowerShell:

Remove-Computer

After you leave the domain, you will need to know the password of the local Administrator account to log onto this computer. Do you wish to continue?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): y

Remove-Computer - вывести компьютер из домене PowerShell

Предварительное создание учетной записи компьютера в домене

При добавлении в домен новые компьютеры по умолчанию помещаются в стандартный контейнер (Organizational Unit / OU) с именем Computers в корне домена. Вы можете вручную перенести учетную запись компьютера в новую OU с помощью пункта меню Move или простым перетягиванием (drag and drop). компьютер попадает в OU Computers по умолчанию

Администратор может предварительно создать учетную запись компьютера в Active Directory с помощью графической консоли Active Directory Users and Computers dsa.msc (New -> Computer) или с помощью командлета New-ADComputer из модуля ActiveDirectory PowerShell:
New-ADComputer -Name "wks-msk022" -SamAccountName "wks-msk022" -Path "OU=Computers,OU=MSK,OU=RU,DC=contoso,DC=loc"

Если вы создаёте учетную запись компьютера вручную, ее имя должно совпадать с именем компьютера (hostname), который вы добавляете в домен AD.

Сначала рекомендуем воспользоваться поиском в AD для поиска компьютеров с таким же именем. Если это имя уже занято, и вы хотите его использовать для другого компьютера, можно его сбросить. Щёлкните правой клавишей по компьютеру в AD и выберите Reset Account.

перенос учетной записи компьютера в AD

Также можно сбросить учетную запись компьютера в AD с помощью команды:

Get-ADComputer -Identity "computername" | % {dsmod computer $_.distinguishedName -reset}

Это сбросит пароль компьютера в домене который используется для установки доверительных отношений с AD.

Командлет Get-ADComputer PowerShell можно использовать для получения различной информации об объектах учётных записей компьютеров (серверах и рабочих станциях) из домена Active Directory. Это один из самых полезных командлетов для поиска компьютеров AD по различным критериям (для получения информации об учётных записях пользователей AD используется другой командлет — Get-ADUser).

Предположим, ваша задача — найти все неактивные компьютеры в Active Directory, которые не были зарегистрированы в домене более 120 дней, и отключить эти учётные записи.

Чтобы использовать командлет Get-ADComputer необходимо установить Модуль Active Directory для Windows PowerShell, в каких системах он уже присутствует и как его установить если он ещё не установлен, смотрите в статье «Как установить и использовать модуль Active Directory PowerShell». На рабочих станциях данный модуль вы можете установить следующей командой:

Add-WindowsCapability -online -Name "Rsat.ActiveDirectory.DS-LDS.Tools"

Get-ADComputer — синтаксис использования командлета

Чтобы получать информацию из AD с помощью командлетов из модуля AD для PowerShell, вам не нужны права администратора домена. Достаточно, чтобы учётная запись, под которой запускается командлет, была членом группы «Domain Users / Authenticated Users».

Чтобы получить информацию о конкретной учётной записи компьютера в домене, укажите её имя в качестве аргумента параметра -Identity:

Get-ADComputer -Identity hackware-server

Пример вывода:

DistinguishedName : CN=HACKWARE-SERVER,OU=Domain Controllers,DC=ds,DC=hackware,DC=ru
DNSHostName       : HackWare-Server-2022.ds.hackware.ru
Enabled           : True
Name              : HACKWARE-SERVER
ObjectClass       : computer
ObjectGUID        : 77e65141-ebec-4728-a1cc-563199d86bf8
SamAccountName    : HACKWARE-SERVER$
SID               : S-1-5-21-670420343-3848213752-1643348011-1000

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

Get-ADComputer -Identity hackware-server -Properties *

Используя Get-Member, вы можете получить список всех свойств объекта ADComputer:

Get-ADComputer -Filter * -Properties * | Get-Member

Дата последнего входа компьютеров в сеть указана в атрибуте LastLogonDate.

Командлет Get-ADComputer позволяет отображать любые свойства компьютера в результатах выполнения команды. Удалите всю ненужную информацию, оставив только значения атрибутов Name и LastLogonDate.

Get-ADComputer -identity hackware-win -Properties * | Format-Table Name,LastLogonDate -Autosize

Итак, мы получили данные о последней регистрации в домене для отдельного компьютера. Затем вам нужно изменить команду, чтобы она отображала информацию о времени последней сетевой регистрации для всех компьютеров в домене. Для этого замените -Identity на -Filter *:

Get-ADComputer -Filter * -Properties * | Format-Table Name,LastLogonDate -Autosize

У нас получилась простая таблица, которая содержит всего 2 поля: имя компьютера и дата LastLogonData. Вы можете добавить в эту таблицу другие поля объекта ADComputer.

Чтобы отобразить информацию об объектах компьютеров в определённом OU (организационном подразделении), используйте параметр -SearchBase:

Get-ADComputer -SearchBase 'OU=Paris,DC=woshub,DC=loc' -Filter * -Properties * | Format-Table Name,LastLogonDate -Autosize

Отсортируйте результаты запроса по дате последнего входа в систему с помощью командлета Sort-Object:

Get-ADComputer -Filter * -Properties * | Sort-Object LastLogonDate | Format-Table 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-Object LastLogonDate | Format-Table Name,LastLogonDate -Autosize

Итак, мы создали список неактивных учётных записей компьютеров, которые не регистрировались в сети более 120 дней. Используйте команду Disable-ADAccount или Set-ADComputer, чтобы отключить их.

Совет. В первый раз лучше проверить результаты выполнения команды с помощью переключателя -WhatIf, который позволяет увидеть, что произойдёт, если бы команда была запущена, но при этом в системе ничего изменено не будет.

Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false -WhatIf

Теперь вы можете отключить все неактивные учётные записи компьютеров:

Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false

Примечание. Также вы можете получить список заблокированных, отключённых и неактивных компьютеров и пользователей домена с помощью отдельного командлета Search-ADAccount.

Примеры использования Get-ADComputer

Ниже приведены ещё несколько полезных примеров использования командлета Get-ADComputer для запроса и поиска компьютерных объектов в домене по определенным критериям.

Чтобы получить общее количество всех активных (не заблокированных) компьютеров в Active Directory:

(Get-ADComputer -Filter {enabled -eq "true"}).count

Подсчёт количества экземпляров Windows Server в домене AD:

Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows Server*' } | Measure-Object | select Count

Чтобы получить список компьютеров в определённом OU, имена которых начинаются с LonPC:

Get-ADComputer -Filter {Name -like "LonPC*"} -SearchBase 'OU=London,DC=ds,DC=hackware,DC=ru' | Format-Table Name,DNSHostName,IPv4Address -Wrap -Auto

При поиске в OU можно использовать дополнительный параметр «-SearchScope 1», что означает, что вам нужно искать только в корне OU. Параметр «-SearchScope 2» указывает на рекурсивный поиск компьютеров во всех вложенных подразделениях.

Чтобы найти все рабочие станции под управлением Windows 10:

Get-ADComputer -Filter {OperatingSystem -like '*Windows 10*'}

Чтобы получить список серверов в домене с версией ОС, установленным пакетом обновлений и IP-адресом:

Get-ADComputer -Filter 'OperatingSystem -like "*Windows server*" -and enabled -eq "true"' -Properties Name,Operatingsystem,OperatingSystemVersion, OperatingSystemServicePack,IPv4Address | Sort-Object -Property Operatingsystem | Select-Object -Property Name,Operatingsystem,OperatingSystemVersion,OperatingSystemServicePack, IPv4Address| Format-Table -Wrap -Auto

На выходе получилась красивая таблица со списком Windows Server в AD.

Атрибут -LDAPFilter позволяет использовать различные запросы LDAP в качестве параметра командлета Get-ADComputer, например:

Get-ADComputer -LDAPFilter "(name=*db*)" | Format-Table

Чтобы найти все отключённые компьютеры в определённом подразделении Active Directory:

Get-ADComputer -filter * -SearchBase 'OU=Computers,OU=London,DC=hackware,dc=ru' | Where-Object {$_.enabled -eq $False}

Чтобы удалить все учётные записи компьютеров, которые не входили в домен более 6 месяцев, вы можете использовать команду:

Get-ADComputer -properties lastLogonDate -filter * | where { $_.lastLogonDate -lt (get-date).addmonths(-6) } | Remove-ADComputer

Результат команды Get-ADComputer можно экспортировать в текстовый файл:

Get-ADComputer -Filter { OperatingSystem -Like '*Windows Server 2008*' } -Properties OperatingSystem | Select DNSHostName, OperatingSystem | Format-Table -AutoSize C:Scriptserver_system.txt

Вы также можете получить список компьютеров и экспортировать его в файл CSV:

Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem,OperatingSystemServicePack | Export-CSV All-Windows.csv -NoTypeInformation -Encoding UTF8

Или получите файл отчёта в формате HTML со списком компьютеров и необходимыми свойствами:

Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server 2012*' } -Properties * | Select-Object Name,OperatingSystem | ConvertTo-Html | Out-File C:psad_computers_list.html

Чтобы выполнить определённое действие со всеми компьютерами в результирующем списке, необходимо использовать цикл ForEach-Object. В этом примере мы хотим создать список серверов в домене и запросить конкретную информацию с каждого сервера (файл результатов должен содержать имя сервера, производителя и модель сервера).

$Computers = Get-ADComputer -Filter {OperatingSystem -Like '*Windows Server*'}
ForEach-Object ($Computer in $Computers)
{
	$Hostname = $Computer.Name
	$ComputerInfo = (Get-WmiObject -Computername $Hostname Win32_ComputerSystem)
	$Manufacturer = $Computer.Manufacturer
	$Model = $Computer.Model
	Write-Host "Name: $Hostname"
	Write-Host "Manufacturer: $Manufacturer"
	Write-Host "Model: $Model"
	Write-Host " "
	$Content = "$Hostname;$Manufacturer;$Model"
	Add-Content -Value $Content -Path "C:PSServersInfo.txt"
}

Вы можете использовать более короткий синтаксис цикла. Предположим, вам нужно запустить определённую команду на всех компьютерах в определённом OU (в этом примере я хочу запустить команду обновления групповой политики на всех серверах):

Get-ADComputer -SearchBase "OU=Servers,DC=woshub,DC=com" -Filter * | %{ Invoke-Command -Computer $_.Name -ScriptBlock {gpupdate /force} }

Используя Get-AdComputer в скриптах автозапуска PowerShell, вы можете управлять различными настройками компьютера. Например, я слежу за состоянием агента (службы) SCCM на компьютерах пользователей. Небольшой скрипт входа в систему выполняется на каждом компьютере во время запуска, он сохраняет статус службы ccmexec в неиспользуемый атрибут компьютера — extensionAttribute10.

Затем с помощью следующей команды я могу найти компьютеры, на которых служба CCMExec отсутствует или не работает.

Get-ADComputer -filter {extensionAttribute10 -ne "SCCM Agent:Running"} -SearchBase “OU=Compters,OU=London,DC=hackware,DC=ru” -properties dNSHostName,extensionAttribute10,LastLogonDate | Select-Object dNSHostName,extensionAttribute10,LastLogonDate

Ещё примеры использования. Допустим, имеется задача получить информацию о всех компьютерах, у которых имя начинается с определённой строки. Для этого можно использовать опцию -Filter с оператором сравнения -like.

Смотрите также: Операторы сравнения в PowerShell

Следующая команда выведет имя, DNS-имя хоста и IPv4-адрес для всех компьютеров, чьё имя начинается на User01:

Get-ADComputer -Filter 'Name -like "User01*"' -Properties IPv4Address | Format-Table Name,DNSHostName,IPv4Address -A

Пример вывода:

name        dnshostname            ipv4address
----        -----------            -----------
User01-SRV1 User01-SRV1.User01.com 10.194.99.181
User01-SRV2 User01-SRV2.User01.com 10.194.100.3

Можно строить более сложные логические условия используя операторы сравнения, например, следующая команда выведет указанные свойства всех компьютеров с именами, начинающимися с Computer01 или Computer02.

Get-ADComputer -Filter 'Name -like "Computer01*" -or Name -like "Computer02*"' -Properties IPv4Address | Format-Table Name,DNSHostName,IPv4Address -A

Пример вывода:

name        dnshostname            ipv4address
----        -----------            -----------
Computer01-SRV1 Computer01-SRV1.Computer01.com 10.194.99.181
Computer02-SRV2 Computer02-SRV2.Computer02.com 10.194.100.3

Предположим, нужно вывести все компьютеры, которые изменили свой пароль за определённый период времени. Следующая команда получает все компьютеры, которые изменили свой пароль за последние 90 дней.

$Date = [DateTime]::Today.AddDays(-90)

Get-ADComputer -Filter 'PasswordLastSet -ge $Date' -Properties PasswordLastSet | Format-Table Name,PasswordLastSet

Пример вывода:

Name                                                      PasswordLastSet
----                                                      ---------------
USER01-SRV4                                               3/12/2009 6:40:37 PM
USER01-SRV5                                               3/12/2009 7:05:45 PM

Предположим имеется задача составить список аккаунтов компьютеров в определённой локации используя LDAPFilter. Следующая команда получает учётные записи компьютеров в расположении CN=Computers,DC=User01,DC=com, при этом с помощью LDAPFilter выбираются только компьютеры, которые указаны как ноутбуки.

Get-ADComputer -LDAPFilter "(name=*laptop*)" -SearchBase "CN=Computers,DC= User01,DC=com"

Пример вывода:

name
----
pattiful-laptop
davidche-laptop

Если нужно просто вывести все аккаунты компьютеров, то выполните следующую команду:

Get-ADComputer -Filter *

Следующие команды покажут имя, имя хоста DNS и адрес IPv4 всех компьютеров, чьё имя начинается со строки «Computer01» И у которых пароль последний раз установлен в течение предшествующих 30 дней.

$Date = [DateTime]::Today.AddDays(-30)

Get-ADComputer -Filter 'Name -like "Computer01*" -and PasswordLastSet -ge $Date' -Properties IPv4Address | FT Name,DNSHostName,IPv4Address -A

Пример вывода:

name        dnshostname            ipv4address
----        -----------            -----------
Computer01-SRV1 Computer01-SRV1.Computer01.com 10.194.99.181

Связанные статьи:

  • Как установить и использовать Модуль Active Directory для Windows PowerShell (100%)
  • LAPS: управление паролями локальных администраторов на компьютерах домена (65.4%)
  • Get-ADUser: поиск сведений о пользователях и фильтр пользователей по их свойствам в Active Directory (61.6%)
  • Управление группами Active Directory с помощью PowerShell (61.6%)
  • Как настроить Windows Server 2022 с помощью PowerShell (50%)
  • Как добавить компьютер в рабочую группу и выйти из домена в PowerShell (RANDOM — 50%)

В предыдущих постах я разместил скрипты на VBScript и на PowerShell, которые записывают в атрибут Description объекта computer в AD имя «залогоненого» на этом компьютере пользователя. Если в вашей организации пользователи не часто меняют компьютер на своем рабочем месте (а в большинстве организаций именно так и происходит), то, запуская эти скрипты время от времени, вы всегда будете знать, за каким компьютером работает тот или иной пользователь. Вы можете легко найти компьютер нужного вам пользователя при помощи оснастки Active Directory Users and Computers, команд dsquery /?, dsget /? в командной строке windows, например

dsquery computer | dsget computer -samid –desc | find /i "username"

 или при помощи командлетов Get-QADComputer в PowerShell, например

Get-QADComputer | where {$_.description -like "*username*"}

Для чего это нужно? Ну, например, как я уже писал ранее, для того, чтобы быстро найти компьютер, за которым работает пользователь, обратившийся к вам за помощью и, затем, подключиться к этому компьютеру. Подключение к сеансу пользователя я выполнял при помощи страницы «Центр справки и поддержки» «Предложение удаленной помощи». Но, если открыть окно с этой страницей можно быстро с помощью URL , например, так

Start ->Run -> hcp://cn=microsoft%20corporation,l=redmond,s=washington,c=us/Remote%20Assistance/Escalation/Unsolicited/unsolicitedrcui.htm

 то для передачи в это окно имени целевого компьютера приходилось заниматься CopyPaste’ом, что совсем не православно и ничуть не доставляет ;). Очень хотелось бы научиться передавать имя компьютера прямо из скрипта автоматически.

 Да, кстати, а знаете ли вы, где взять URL для вызова окна «Предложение удаленной помощи»? Может быть вам не интересно, но я все  равно расскажу. ;) Все на самом деле очень просто. Сначала надо добраться до самой страницы. Делаем так: <Win>+<F1> -> «Использование служебных программ для просмотра информации о компьютере и диагностики неполадок» — «Предложение удаленной помощи». Затем, щелкаем правой кнопкой мышки по открытой в окне странице и (в выпашем контекстном меню) выбираем пункт «Свойства».

 

 В результате перед нами откроется окно, содержащее (вы не поверите ;)) свойства  этой страницы.

  

Среди прочих — в окне свойств имеется и нужный нам Адрес (URL), который мы легко можем скопировать при помощи «мыши».

 Хорошо, URL нашли, но где же сам файл, который открывается при вызове этого URL? Если поискать файл, указанный в URL (unsolicitedrcui.htm), на компьютере, то мы  найдем его в папке “C:WINDOWSpchealthhelpctrVendorsCN=Microsoft Corporation,L=Redmond,S=Washington,C=USRemote AssistanceEscalationUnsolicited” Да-да, это именно имя папки, которая на самом деле существует на вашем компьютере. Для тех, кто не верит, покажу скриншот

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

Поэтому откроем найденный файл и подумаем, как мы могли бы передать в него имя компьютера, к которому мы хотим осуществить подключение?

 Мы видим, что код на писан на JScript и использует объект SAFRemoteDesktopConnection.  В тексте файла меня заинтересовали следующие строки:

<INPUT type=text class="sys-font-body sys-color-body MaxWidth" name="idComputerName" id="idComputerName" onkeypress="onEnter()" title="Введите или скопируйте имя компьютера или IP-адрес" size=47 tabindex=1>

и строки в функции onConnect():

…
try
{
g_oSAFRemoteConnectionData = g_oSAFRemoteDesktopConnection.ConnectRemoteDesktop(idComputerName.value);
}
…

Если посмотреть на них, то становиться понятно, что для того, чтобы добиться результата и передать в текстовое поле idComputerName формы «Предложение удаленной помощи» имя компьютера, необходимо задать значение текстового поля idComputerName.value. Сделать это можно, например, в функции onLoad(), которая, очевидно, вызывается при загрузке страницы.

Да, но как передать в функцию onLoad() имя целевого компьютера? Т.к. мы собрались вызывать форму «Предложение удаленной помощи» из скрипта при помощи URL, то логично было бы передавать имя компьютера в этом же самом URL, а уже внутри формы выделять имя компьютера из этого URL. Проделать это, как выяснилось, не сложно.

Если мы добавим имя компьютера к URL страницы, разделив их знаком вопроса,

 hcp://CN=Microsoft%20Corporation,L=Redmond,S=Washington,C=US/Remote%20Assistance/Escalation/Unsolicited/UnsolicitedRCui+.htm?computer_name

  то сможем поступить следующим образом: URL получим при помощи объекта window.location. У этого объекта имеется свойство search, которое вернет нам ту часть URL, которая начинается со знака вопроса. Осталось отбросить сам знак вопроса, который нам совсем не нужен. Т.к. window.location.search вернет нам строку (объект типа String  Jscript), то для того, чтобы отбросить первый символ (знак вопроса), можно использовать метод substring объекта String. Т.о. выделить имя компьютера из следующего URL

hcp://CN=Microsoft%20Corporation,L=Redmond,S=Washington,C=US/Remote%20Assistance/Escalation/Unsolicited/UnsolicitedRCui+.htm?computer_name

 можно при помощи одной строчки кода: window.location.search.substring(1)

 В конечном итоге, все, что нам нужно сделать, чтобы добиться поставленной цели, это добавить в функцию onLoad() строку idComputerName.value = window.location.search.substring(1); :

function onLoad()
{
;
;
try
{///////////
/// add by shs
///////////
idComputerName.value = window.location.search.substring(1);
///////
setTimeout("idComputerName.focus()",250);
g_oSAFRemoteDesktopConnection = oSAFClassFactory.CreateObject_RemoteDesktopConnection();
}
…

 эта строка кода запишет в поле формы имя компьютера, которое мы укажем в URL при вызове страницы «Предложение удаленной помощи».

Модифицированный вышеописанным способом файл unsolicitedrcui.htm, я сохранил в ту же папку, что и исходный, изменив его имя на unsolicitedrcui+.htm

 Уф-ф-ф… Ну, а теперь пришло время самого скрипта, который будет осуществлять поиск компьютера по имени пользователя, которое мы  заранее записали в атрибут Description для каждого объекта компьютер в AD.

####################################################################################
# RemAssist.ps1 PowerShell ShS 20091207
#
# Поиск целевого компьютера по содержимому атрибута Description (с последующим
# вызовом окна "Центр справки и поддержки" и передачей в параметрах вызова
# имени целевого компьютера)
####################################################################################
#
#Проверяем, что в командной строке запуска скрипта присутствовали аргументы вызова
if ($Args.Count -gt 0) {
    $args[0]
    #Зададим маску поиска
    #(будем искать вхождение первого аргумента)
    $mask="*$($args[0])*"
    #производим поиск компьютера, согласно заданой маске , по атрибуту Description
    $comps=@(Get-QADComputer -SizeLimit 0 | ?{$_.Description -like $mask})
    #
    $i=1
    #Если было найдено более одного компьютера, то...
    if ($comps.length -gt 1) {
        cls
        #...сформируем и выведем на экран нумерованный список найденных компьютеров
        for (;$comp=$comps[$i-1];$i++) {
            "[$i]" + " $comp`t"+$comp.Description+"`n"
        }
        #допрос пользователя
        $i=[int](Read-Host "Введите номер компьютера из списка или 0 - для завершения работы")
    }
    #Если пользователь указал правильный номер компьютера...
    if (($i -gt 0) -and ($i -le $comps.length)) {
        $comp=$comps[$i-1]
        #...произведем вызов окна "Центр справки и поддержки"
        #в URL вызова передадим имя найденного компьютера
        &"$env:windirPCHEALTHHELPCTRBinariesHelpCtr.exe" -url (
        "hcp://CN=Microsoft%20Corporation,L=Redmond,S=Washington,C=US/Remote%20Assistance/Escalation/Unsolicited/UnsolicitedRCui+.htm?"+
        $comp.Name)
    }
    "$comp`t"+$comp.Description
} else {
#если скрипт был вызван без аргументов, печатаем краткую справку
"`n" + $MyInvocation.MyCommand.Name + " PoSh ShS 20090709"
"`nUsage :`n"
$MyInvocation.MyCommand.Name + " <part_of_ComputerDescription>"+$Args
}

Т.к. он написан на PoSh и снабжен подробными комментариями, то пояснять здесь особенно нечего, кроме того, что для вызова URL, который начинается с префикса hcp://, необходимо использовать helpctr.exe

Upd. Пример работы скрипта. Если мы хотим подключиться к компьютеру пользователя, чье имя содержит подстроку «bo», то нам нужно будет запустить скрипт следующим образом:

PS > .RemAssist.ps1 bo

В результате получим:

[1] DOMAINORG-20071018-1$ DOMAINBorisovaIrina

[2] DOMAINORG-20080201-1$ DOMAINBogachevaTatyana

[3] DOMAINORG-20061211-1$ DOMAINBogolyubovaSvetlana

[4] DOMAINORG-20071008-1$ DOMAINbondarchukIvan

Введите номер компьютера из списка или 0 - для завершения работы: 4
DOMAINORG-20071008-1$ DOMAIN bondarchukIvan
PS >

Как видно из вышеприведенного примера, я выбрал компьютер с четвертым порядковым номером из предложенного скриптом списка и, как результат, получил в консоле запись DOMAINORG-20071008-1$ DOMAIN bondarchukIvan, подтверждающую мой выбор, и окно «Предложение удаленной помощи» с именем компьютера, которое было подставлено в него скриптом.

Need to export all computers from an OU, or look up a computer in your Active Directory? Or do you want to count how many computers you have? We can use the Get-ADComputer cmdlet in PowerShell to quickly extract computer information from the AD.

The Active Directory contains all the computers that are members of our domain. The management console is great to look up a single computer. But when you want to get details of single or multiple computers, then we need to use PowerShell.

In this article

In this article, we are going to take a look at how to use the Get-ADComputer cmdlet in PowerShell. I will also give you some useful examples when it comes to looking up and exporting AD computers. And as a bonus, if have added a complete script to export your Active Directory computers.

Install Active Directory Module

To be able to use the Get-ADComputer cmdlet in PowerShell you will need to have the Active Directory Module installed. By default, it’s installed on the domain controller, but on Windows 10 or 11 you will need to install it.

You can run the following PowerShell command in Windows 10 or 11 to install the module:

Add-WindowsCapability –online –Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”

Finding Computers with Get ADComputer in PowerShell

The Get-ADComputer cmdlet allows us to find computer objects in the Active Directory and extract information from them. The true power of this cmdlet is that it comes with different options to find those computer objects.

We have the following options when it comes to finding objects:

  • Identity – Find computers based on their name. This will return only a single computer
  • Filter – Retrieve multiple objects based on a query
  • LDAPFilter – Use a LDAP query string to filter the computer objects
  • SearchBase – Specify the Active Directory path (OU) to search in
  • SearchScope – Specify how deep you want to search (base level, one level, or complete subtree)

The identity parameter is mainly used when you know the computer’s SAMAccountName (computer name). This allows you to select a single computer from the Active Directory and view the properties of the account.

Get-ADComputer -identity la-computer-22

Get-ADComputer

Get-ADComputer

This will return the basic properties of the computer. We can use the -properties parameter to retrieve more information from the computer. I will explain more about retrieving different properties later in the article, but if you want to see all possible information about a computer account, then use the following command:

Get-ADComputer -identity la-computer-22 -properties *

Get ADComputer SearchBase

Most of the time when you want to retrieve computers from the Active Directory you want to narrow down the search base on OU. To do this we can use the -SearchBase parameter for the Get-ADComputer cmdlet. This allows us to specify the OU (distinguishedName) where we want to search.

The distinguishedName is the full path of the OU, which we write from the OU up the tree to the AD domain name.

Take the following AD structure, we want to get all computers from the Amsterdam site:

Active Directory Computers

SearchBase Path

The search base string, in this case, would be:

    1              2           3         4        5
"OU=Computers,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL"

Thus to get all computers from the site Amsterdam, we can use the following PowerShell command:

Get-ADComputer -Filter * -SearchBase "OU=Computers,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL" | ft

Using the SearchScope

The -SearchBase parameter will return all computers from the specified and nested OU’s. By using the -SearchScope parameter, we can specify how deep or not we want to search through the Active Directory tree.

Let’s say we want to get all computers from Amsterdam, except the computers that are in stock:

Nested OU

If we would use the searchbase that we created earlier, then all computers, including those in stock, will be returned, a total of 15 computers.

$searchBase = "OU=Computers,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL"

$computers = Get-ADComputer -Filter * -SearchBase $searchBase
$computers.count   # Returns 15

To exclude the computers that are in Stock, we can use the SearchScope parameter. This allows us to limit the searchbase only to the current level:

$searchBase = "OU=Computers,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL"

$computers = Get-ADComputer -Filter * -SearchBase $searchBase -SearchScope OneLevel
$computers.count    # Returns 12

Using the Filter parameter

The Get-ADComputer cmdlet is also a great way to find one or multiple computers in your AD. Although the computer object doesn’t contain a lot of information, we can still use a couple of the properties to filter on.

Let’s take a look at a couple of commonly used examples to find computers:

We can find a computer based on a part of the computer name with the -like filter:

Get-ADComputer -Filter "Name -like '*workstation*'" | ft

Note the wildcard, this means that there can be something in front and after the word “workstation”.

Get Computers based on OS

The Active Directory also keeps track of all operating systems on the computers. So we can also get all computers that are running Windows 10 Pro for example:

Get-ADComputer -Filter "OperatingSystem -eq 'Windows 10 Pro'" | ft

ad computer

Get all computers based on Operating System

We can also use multiple conditions, for example, to get all computers that running on Windows 10 or 11:

Get-ADComputer -Filter "OperatingSystem -eq 'Windows 10 Pro' -or OperatingSystem -eq 'Windows 11 Pro'" | ft

Get InActive Computers

Want to know how many inactive computers you have? We can filter the AD computers on the lastlogondate to extract all computers that are not used for the last 90 days for example.

For this, we first need to create a date variable, by taking the date from today and subtracting 90 days from it. We can then filter the AD Computers on the lastlogondate:

$date = (Get-Date) - (New-TimeSpan -Days 90)
Get-ADcomputer -Filter 'lastLogondate -lt $date' | ft

# Select the canonicalName,lastlogondate and name for a more readable list
Get-ADcomputer -Filter 'lastLogondate -lt $date' -properties canonicalName,lastlogondate | select name,canonicalname,lastlogondate | ft -AutoSize

Get all Disabled Computers

Another useful example is to get all disabled computers from the OU:

# Get all disabled computers
Get-ADComputer -Filter "Enabled -eq 'False'" | ft

# Get only enabled computers
Get-ADComputer -Filter "Enabled -eq 'True'" | ft

Get ADComputer Properties

As mentioned earlier in the article, the computer object doesn’t contain a lot of useful properties (compared to a user object). But there is still some useful information that can be extracted from the object.

Without specifying the properties, you only get computer name and distinguishedname related information. But other properties that are useful are for example:

  • BadLogonCount
  • BadPwdCount
  • IPv4Address
  • Enabled
  • LastLogOff
  • LastLogonDate
  • LogonCount
  • OperatingSystem
  • OperatingSystemVersion
  • WhenCreated

To get this information we can use the -properties parameter:

Get-ADComputer -identity la-computer-22 -Properties IPv4Address,LastLogonDate,OperatingSystem,OperatingSystemVersion,WhenCreated

Export AD Computer to CSV with PowerShell

Exporting results in PowerShell to CSV is pretty common. We all use PowerShell often to retrieve information only to process it further in Excel. I have written a complete guide about the Export-CSV cmdlet, but I also want to give you a couple of useful examples when working with the Get-ADComputer cmdlet.

To simply export all AD Computer object we can use the following command:

Get-ADComputer -filter * | Export-CSV c:tempcomputers.csv -NoTypeInformation

But as you will notice this will give not really the results that you are looking for. It will include all computer objects, enabled and disabled, and not really the information that we need.

Select the properties that we need

So the first step is to specify the fields that we really want to export. For example, if we want to export the name, canonicalname, operatingsystem, and LastLogonDate we could use the following command:

Get-ADComputer -filter * -properties canonicalname,operatingsystem,LastLogonDate | select name,canonicalname,operatingsystem,LastLogonDate | Export-CSV c:tempcomputers.csv -NoTypeInformation

Export only Enabled Computers

If you want to export only enable computers, you can add a filter to the cmdlet:

Get-ADComputer -filter "Enabled -eq 'true'" -properties canonicalname,operatingsystem,LastLogonDate | select name,canonicalname,operatingsystem,LastLogonDate | Export-CSV c:tempcomputers.csv -NoTypeInformation

Complete Export AD Computers to CSV Script

I have created a PowerShell script that will Export all AD Computers to CSV for you with the most commonly needed properties.

When you run the script you specify a couple of options:

  • Specify the searchBase (OU), default whole Active Directory
  • Get enabled or disabled computers or both (default only enabled)
  • Export path CSV file (default script location)

The script will get all the user accounts from the active directory if you don’t specify the searchBase (OU). It’s also possible to specify multiple OU’s:

.Get-ADComputers.ps1 -searchBase "OU=computers,OU=Amsterdam,DC=LazyAdmin,DC=Local","OU=computers,OU=Oslo,DC=LazyAdmin,DC=Local" -path c:tempcomputers.csv

Follow these steps to export the AD Computers with the PowerShell script:

  1. Download the complete Export AD Computers script from my Github
  2. Open PowerShell and navigate to the script
  3. Run the export script: Get-ADComputers.ps1

When complete, the script will automatically open Excel for you.

param(
  [Parameter(
    Mandatory = $false,
    HelpMessage = "Enter the searchbase between quotes or multiple separated with a comma"
    )]
  [string[]]$searchBase,

  [Parameter(
    Mandatory = $false,
    HelpMessage = "Get computers that are enabled, disabled or both"
  )]
    [ValidateSet("true", "false", "both")]
  [string]$enabled = "true",

  [Parameter(
    Mandatory = $false,
    HelpMessage = "Enter path to save the CSV file"
  )]
  [string]$path = ".ADcomputers-$((Get-Date -format "MMM-dd-yyyy").ToString()).csv"
)

Function Get-Computers {
    <#
    .SYNOPSIS
      Get computers from the requested DN
    #>
    param(
      [Parameter(
        Mandatory = $true
      )]
      $dn
    )
    process{
      # Set the properties to retrieve
      $properties = @(
        'Name',
        'CanonicalName',
        'OperatingSystem',
        'OperatingSystemVersion',
        'LastLogonDate',
        'LogonCount',
        'BadLogonCount',
        'IPv4Address',
        'Enabled',
        'whenCreated'
      )

      # Get enabled, disabled or both computers
      switch ($enabled)
      {
        "true" {$filter = "enabled -eq 'true'"}
        "false" {$filter = "enabled -eq 'false'"}
        "both" {$filter = "*"}
      }

      # Get the computers
      Get-ADComputer -Filter $filter -searchBase $dn -Properties $properties | select $properties
    }
}


Function Get-AllADComputers {
  <#
    .SYNOPSIS
      Get all AD computers
  #>
  process {
    Write-Host "Collecting computers" -ForegroundColor Cyan
    $computers = @()

    # Collect computers
    if ($searchBase) {
      # Get the requested mailboxes
       foreach ($dn in $searchBase) {
         Write-Host "- Get computers in $dn" -ForegroundColor Cyan
         $computers += Get-Computers -dn $dn
       }
     }else{
       # Get distinguishedName of the domain
       $dn = Get-ADDomain | Select -ExpandProperty DistinguishedName
       Write-Host "- Get computers in $dn" -ForegroundColor Cyan
       $computers += Get-Computers -dn $dn
     }
 

    # Loop through all computers
    $computers | ForEach {

      [pscustomobject]@{
        "Name" = $_.Name
        "CanonicalName" = $_.CanonicalName
        "OS" = $_.OperatingSystem
        "OS Version" = $_.OperatingSystemVersion
        "Last Logon" = $_.lastLogonDate
        "Logon Count" = $_.logonCount
        "Bad Logon Count" = $_.BadLogonCount
        "IP Address" = $_.IPv4Address
        "Mobile" = $_.mobile
        "Enabled" = if ($_.Enabled) {"enabled"} else {"disabled"}
        "Date created" = $_.whenCreated
      }
    }
  }
}

Get-AllADComputers | Sort-Object Name | Export-CSV -Path $path -NoTypeInformation

if ((Get-Item $path).Length -gt 0) {
  Write-Host "Report finished and saved in $path" -ForegroundColor Green

  # Open the CSV file
  Invoke-Item $path

}else{
  Write-Host "Failed to create report" -ForegroundColor Red
}

Wrapping Up

The Get ADComputer cmdlet is really useful when it comes to exacting computers out of the Active Directory. Using the searchbase parameter allows you to quickly select the computer that you need from the specified OU.

To Export the AD Computers to CSV you can try the script. You can easily change the properties that it retrieves to your own need.

If you have any questions, just drop a comment below.

Понравилась статья? Поделить с друзьями:
  • Как найти человека через телефон gps
  • Зеленый экран в игре как исправить
  • Как найти ноутбук музыка
  • Как найти синий кит в контакте
  • Как найти центр тяжести прямоугольника треугольника круга