Получение пользователей группы AD из PowerShell
get-module -ListAvailable
И если вы не видите модуля ActiveDirectory, то его придется установить:
Import-Module ServerManagerAdd-WindowsFeature RSAT-AD-PowerShellПосле это го в список модулей должен выглядеть как то так:PS C:\Windows\system32> get-module -ListAvailable
ModuleType Name ExportedCommands ———- —- —————- Manifest ActiveDirectory {} Manifest ADRMS {}
Вот, собственно после этого и начинается написание скрипта:
Import-Module ActiveDirectory#получить информацию о доменеGet-ADDomain#получаем информацию о группе$group = Get-AdGroup <имя группы без кавычек, например: Administrators>#получаем пользователей из выбранной группыGet-ADUser -Filter {MemberOf -recursivematch $group.DistinguishedName}
Согласитесь достаточно просто? Причем, я не являюсь администратором домена, на доступном мне сервере нет контроллера домена, но все работает.Кстати, никто нам не мешает, посмотреть по пользователю любые свойства доступные в AD. Например:Get-ADUser -Filter {Surname -eq ‘Лосев’} -properties * | Select CN, Created
CN Created — ——- Лосев Алексей Юрьевич 08.08.2011 14:55:04Как то вот так.
Получить список компьютеров по ОС из PowerShell
Запускаем оболочку PowerShell, для того чтобы получить список всех компьютеров с нужной операционной системой введите вот такую команду:
Get-ADComputer -Filter { OperatingSystem -Like ‘*Windows Server 2008*’ } -Properties OperatingSystem | Select Name, OperatingSystem | Format-Table -AutoSize
На выходе получите список из имени и версии ОС
Согласитесь, что это не информативно. Хочется, чтобы были данные:
- Имя
- Версию операционной системы
- Дату последнего обращения (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
Если нужно выгрузить в файл, то просто добавьте в конце | Out-File C:\Scripts\Windows-Server.txt или для csv файла | Export-CSV All-Windows.csv -NoTypeInformation -Encoding UTF8
В итоге я получил вот такой замечательный текстовый файл, в котором я вижу, какой компьютер живой и отвечает по сети, а какой нет и когда он последний раз обращался к контроллеру домена.
Роли мастеров операций уровня домена
- Мастер относительных идентификаторов RID
- Эмулятор главного контроллера домена PDC
- Мастер инфраструктуры
Мастер RID
Таблица 1. Структура элемента идентификатора
Элемент идентификатора SID | Описание |
S1 | Указывает ревизию SID. В настоящее время для SID используется только одна ревизия |
5 | Указывает центр выдачи принципала безопасности. Значение 5 всегда указывается для доменов Windows NT, Windows 2000, Windows 2003, Windows 2008 и Windows 2008 R2 |
Y1-Y2-Y3 | Часть идентификатора SID домена. Для принципалов безопасности, созданных в домене этот элемент идентификатора идентичен |
Y4 | Относительный идентификатор (RID) для домена, который представляет имя пользователя или группы. Этот элемент генерируется из пула RID на контроллере домена во время создания объекта |
«Active Directory – пользователи и компьютеры»Ntdsutil.exefSMORoleOwner
Эмулятор PDC
эмулятор PDC
- Участие в репликации обновлений паролей домена. При изменении или сбросе пароля пользователя, контроллер домена, вносящий изменения, реплицирует это изменение на PDC-эмулятор посредством срочной репликации. Эта репликация гарантирует, что контроллеры домена быстро узнают изменённый пароль. В том случае, если пользователь пытается войти в систему сразу после изменения пароля, контроллер домена, отвечающий на этот запрос, может ещё не знать новый пароль. Перед тем как отклонить попытку входа, этот контроллер домена направляет запрос проверки подлинности на PDC-эмулятор, который проверяет корректность нового пароля и указывает контроллеру домена принять запрос входа. Это означает, что каждый раз при вводе пользователем неправильного пароля проверка подлинности направляется на PDC-эмулятор для получения окончательного заключения;
- Управление обновлениями групповой политики в домене. Как вы знаете, для управления большинства настройками в конфигурации компьютеров и пользователей вашей организации применяются групповые политики. В том случае, если объект групповой политики модифицируется на двух контроллерах домена приблизительно в одинаковое время, то впоследствии, могут возникать конфликты между двумя версиями, которые не разрешаются при репликации объектов групповых политик. Во избежание таких конфликтов, PDC-эмулятор действует следующим образом: при открытии объекта групповой политики, оснастка редактора управления групповой политики привязывается к контроллеру домена, выполняющего роль PDC и все изменения объектов GPO по умолчанию вносятся на PDC-эмулятор;
- Выполнение функции центрального браузера домена. Для обнаружения сетевых ресурсов клиенты используют Active Directory. При открытии окна «Сеть» в операционной системе отображается список рабочих групп и доменов. После того как пользователь откроет указанную рабочую группу или домен он сможет увидеть список компьютеров. Эти списки генерируются посредством службы браузера, и в каждом сетевом сегменте ведущий браузер создаёт список просмотра с рабочими группами, доменами и серверами данного сегмента. После чего центральный браузер объединяет списки всех ведущих браузеров для того, чтобы клиентские машины могли просмотреть весь список просмотра. Думаю, из всех функций эмулятора PDC у вас могут возникнуть вопросы, связанные непосредственно с центральным браузером домена, поэтому, данная тема будет подробно рассмотрена в отдельной статье;
- Обеспечение главного источника времени домена. Так как службы Active Directory, Kerberos, DFS-R и служба репликации файлов FRS используют штампы времени, во всех системах домена необходима синхронизация времени. PDC-эмулятор в корневом домене леса служит ведущим источником времени всего леса. Остальные контроллеры домена синхронизируют время с PDC-эмулятором, а клиентские компьютеры – со своими контроллерами доменов. Гарантию за соответствие времени несёт иерархическая служба синхронизации, которая реализована в службе Win32Time.
«Active Directory – пользователи и компьютеры»Ntdsutil.exefSMORoleOwner
Группы безопасности, учетные записи пользователей и другие основы AD
Операционная система Windows используется на многих предприятих, соответственно ИТ-специалисты используют Active Directory (AD). Active Directory является неотъемлемой частью архитектуры сети предприятия, позволяя ИТ-специалистам лучше контролировать доступ и безопасность. AD — это централизованная стандартная система, позволяющая системным администраторам автоматически управлять своими доменами, учетными записями пользователей и устройствами (компьютерами, принтерами и т.д.) в сети.
AD имеет решающее значение для ряда функций — она может отвечать за хранение централизованных данных, управление связью между доменами и предоставление безопасных сертификатов. Самое главное — AD дает системным администраторам контроль над паролями и уровнями доступа в их сети для управления различными объектами в системе. В то же время Active Directory может помочь пользователям облегчить доступ к ресурсам в сети.
Какие атаки может предотвратить Active Directory?
Как видите, Active Directory — это центральный инструмент для управления рядом функций безопасности бизнеса. Существует ряд распространенных атак, которые могут помочь предотвратить хорошие практики Active Directory:
- Атака передачи хэша: эта атака существует уже более десяти лет. Несмотря на то, что данный тип один из самых известных, ему все же удалось нанести значительный ущерб. Используя атаку передачи хэша, злоумышленник извлекает хэшированные (более короткие значения фиксированной длины) учетные данные пользователя, чтобы перейти на удаленный сервер. Проще говоря, если злоумышленник добьется успеха с помощью тактики передачи хэша, в вашем процессе аутентификации есть слабость.
- Brute-force: простая, но эффективная атака методом «грубой силы», включает в себя перебор случайных имен пользователей и паролей в быстрой последовательности, чтобы получить доступ к вашей системе. Каковы шансы хакера на успех с помощью этого метода? Больше, чем ты думаешь. Злоумышленники, практикующие грубую силу, используют усовершенствованное программирование для создания триллионов комбинаций за считанные секунды.
Как через Powershell получить список пользователей AD с Get-ADUser
01 августа 2019
Get-ADUser команда, которая возвращает список пользователей AD в Powershell. На самом деле командлет мало чем отличается от тех, которые мы рассматривали раннее с приставкой «Get-AD».
Для работы с командой нам понадобится Powershell Active Directory Module.
Так мы вернем всех пользователей AD:
Если нам нужно найти по имени, сделайте так:
Где вместо Adminis имя вашей учетной записи. Звездочки позволяют искать вхождение где справа и слева могут быть еще символы.
Для получения сведений об одной учетной записи AD есть ключ Identity:
Кроме этого у нас есть дополнительный ключ Properties, который выводит дополнительные свойства у объекта пользователя:
Get-ADUser в OU,
Если вам нужно искать в контейнере — используйте CN. Примеры с множеством OU смотрите ниже.
Навигация по посту:
Дополнительные сведения
Пользователи, компьютеры и группы, созданные API более ранней версии, создают объекты в пути DN, указанном в атрибуте WellKnownObjects. Атрибут WellKnownObjects расположен в главе NC домена. В следующем примере кода показаны соответствующие пути в атрибуте WellKnownObjects из CONTOSO.COM области NC.
Dn: DC=CONTOSO,DC=COM
Например, в следующих операциях используются API более ранней версии, которые отвечают на пути, определенные в атрибуте WellKnownObjects:
Операция | Версии операционной системы |
---|---|
Пользовательский интерфейс «Регистрация домена» | Windows NT версии4.0Windows 2000Windows XP ProfessionalWindows XP UltimateWindows Server 2003Windows Server 2003 R2Windows VistaWindows Server 2008Windows 7Windows Server 2008 R2 |
NET COMPUTER | Все версии |
NET GROUP | Все версии |
NET USER | Все версии |
ДОБАВЛЕНИЕ NETDOM, где команда /ou не указана или поддерживается | Все версии |
Полезно сделать контейнер по умолчанию для групп пользователей, компьютеров и безопасности OU по нескольким причинам, в том числе:
-
Групповые политики можно применять в контейнерах OU, но не в контейнерах класса CN, где по умолчанию ставятся основные принципы безопасности.
-
Передовая практика — упорядочность принципов безопасности в иерархию OU, которая отражает организационную структуру, географическое расположение или модель администрирования.
При перенаправлении папок CN=Users и CN=Computers следует помнить о следующих проблемах:
-
Целевой домен должен быть настроен для запуска на уровне Windows Server 2003 или выше. Для функционального уровня Windows Server 2003 это означает:
- Windows Сервер 2003 или более новый
- Windows Сервер 2003 или более новый
- Все контроллеры домена в целевом домене должны работать Windows Server 2003 или более новые.
- Windows Необходимо включить функциональный уровень домена Server 2003 или более высокий.
-
В отличие от CN=USERS и CN=COMPUTERS, контейнеры OU подвергаются случайным удалениям привилегированных учетных записей пользователей, в том числе администраторов.
Контейнеры CN=USERS и CN=COMPUTERS — это объекты, защищенные системой, которые не могут и не должны удаляться для обратной совместимости. Но их можно переименовать. Организационные подразделения могут быть удалены администраторами случайно.
Windows Версии сервера 2003 для пользователей Active Directory & компьютеров могут выполнять действия в Области Защиты организационного подразделения от случайного удаления.
Windows Сервер 2008 и более новые версии оснастки пользователей и компьютеров Active Directory имеют объект Protect от случайного удаления, который можно выбрать при создании нового контейнера OU. Вы также можете выбрать его на вкладке Объект в диалоговом окне Свойства для существующего контейнера OU.
Сценарий задокументирован в script to Protect Organizational Units (OUs) от случайного удаления.
-
Exchange Server 2000 и 2003 годах с ошибками.
Получение компьютеров
Команда, которая вернет список всех компьютеров в домене следующая:
Команда точно выполнится на домен контроллере, так как все поддерживаемые серверные версии ОС устанавливают нужный модуль Powershell вместе с Active Directory (если вы только специально не отключали эту возможность). Если вы планируете выполнять команду с клиента на Windows 7 и выше, то такой модуль устанавливается вместе с RSAT (Remote Server Administration Tools). В отдельном случае может понадобится импортировать этот модуль следующей командой:
Вы так же можете проверить, что этот модуль у вас установлен следующей командой:
В остальных случаях стоит смотреть на явные запреты на выполнение скриптов Powershell и чтения Active Directory.
Что бы вернуть данные по одному пользователю используется ключ Identity:
Параметр Filter является обязательным. Вы можете вернуть дополнительные данные используя Properties:
Вам так же будет интересно:
Настройки электропитания
Время отключения дисплея настраивается по пути
Конфигурация компьютера Политики Административные шаблоны Система Управление электропитанием Параметры дисплея и видео
Включить правило и указать время в секундах (15 минут = 900, 30 минут = 1800)
Отключить дисплей (питание от сети) Отключить дисплей (питание от батареи)
Время отключения жесткого диска настраивается по пути
Конфигурация компьютера Политики Административные шаблоны Система Управление электропитанием Параметры жесткого диска
Включить правило и указать время в секундах, лучше всего указать 0, чтобы жесткий диск совсем не отключался
Отключить жесткий диск (питание от сети) Отключить жесткий диск (питание от батареи)
Регулировка спящего режима настраивается по пути
Конфигурация компьютера Политики Административные шаблоны Система Управление электропитанием Параметры спящего режима
Включить правило и указать время в секундах, при 0, компьютер не будет уходить в спящий режим
Указать время ожидания автоматического перехода в спящий режим (питание от сети) Указать время ожидания автоматического перехода в спящий режим (питание от батареи)
Так же можно включить или выключить правило для запроса пароля после выхода из спящего режима
Требовать пароль при выходе из спящего режима (питание от сети) Требовать пароль при выходе из спящего режима (питание от батареи)
Ввод пароля после вывода заставки настраивается по пути
Конфигурация пользователя Политики Административные шаблоны Панель управления Персонализация
Можно включить или выключить правило для запроса пароля после заставки
Защита заставки с помощью пароля
Получение компьютеров через LDAP запрос
И так получить я хочу компьютеры у которых в качестве операционной системы выступает Windows Server 2008 R2. Для этого откройте оснастку «Active Directory Пользователи и компьютеры». В оснастке ADUC найдите раздел «Сохраненные запросы» и через правый клик по контейнеру, выберите пункт «Создать — Запрос».
Задаете понятное имя LDAP запроса и нажимаем кнопку «Запрос».
Выбираете «Пользовательский поиск», в поле выбираете «Компьютер — Операционная система».
В значении пишите Windows Server 2008 и нажимаете кнопку добавить.
Сохраняем настройки, нажимая кнопку «Ок».
В результате мы получили вот такой LDAP зарос:
На выходе вы получите список компьютеров с нужной вам операционной системой, у меня получилось 86 серверов, большая часть из них имеет статус отключен, об этом говорит стрелка вниз на значке. Так же удобно будет добавить столбец последнего изменения.
Подключение консоли ADUC к домену из рабочей группы
Как подсоединиться к контроллеру со своего ПК:
- выполнить команду запуска оснастки от имени другого пользователя;
- ввести: «runas / netonly / user:winitpro \ aaivanov mmc»;
- появится окошко «MMC»;
- открыть в окошке «File»;
- выбрать «Add / Remove Snap In»;
- откроется окошко «Add or Remove Snap In»;
- в левом списке «Snap in» этого окошка отыскать «Active Directory Users and Computers»;
- перенести найденный инструмент в правый список «Console Root»;
- после перенесения кликнуть по «Active Directory Users and Computers»;
- появится всплывающее меню;
- выбрать «Change domain»;
- указать название своего домена;
- подключить ADUC к доменному контроллеру.
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 -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.
Создание пользователей средствами командной строки
Как и в большинстве случаев, в операционной системе Windows есть утилиты командной строки с аналогичными функциями графического пользовательского интерфейса оснастки «Active Directory – пользователи и компьютеры». Такие команды называются командами DS, так как они начинаются с букв DS. Для создания принципалов безопасности используется команда Dsadd. После самой команды указываются модификаторы, которые определяют тип и имя DN объекта. В случае с созданием учетных записей пользователей вам нужно указать модификатор user, который является типом объекта. После типа объекта необходимо ввести DN имя самого объекта. DN (Distinguished Name) объекта является результирующим набором, который содержит отличительное имя. Следом за DN обычно указывают имя пользователя UPN или имя входа предыдущих версий Windows. Если в имени DN присутствуют пробелы, то такое имя нужно заключить в кавычки. Синтаксис команды следующий:
Dsadd user DN_имя –samid имя_учетной_записи –UPN_имя –pwd пароль –дополнительные параметры
С данной командой можно использовать 41 параметр. Рассмотрим самые распространенные из них:
-samid – имя учетной записи пользователя;
-upn – имя входа пользователя пред-Windows 2000;
-fn – имя пользователя, которое в графическом интерфейсе заполняется в поле «Имя»;
-mi – инициал пользователя;
-ln – фамилия пользователя, указываемая в поле «Фамилия» мастера создания пользовательской учетной записи;
-display – указывает полное имя пользователя, которое автоматически генерируется в пользовательском интерфейсе;
-empid – код сотрудника, который создается для пользователя;
-pwd – параметр, определяющий пользовательский пароль. В том случае, если вы укажете символ звездочки (*), вам будет предложено ввести пароль пользователя в защищенном от просмотра режиме;
-desc – краткое описание для пользовательской учетной записи;
-memberof – параметр, определяющий членство пользователя в одной или нескольких группах;
-office – местонахождения офиса, где работает пользователь. В свойствах учетной записи этот параметр можно найти во вкладке «Организация»;
-tel – номер контактного телефона текущего пользователя;
-hometel – параметр, указывающий номер домашнего телефона пользователя;
-mobile – телефонный номер мобильного пользователя;
-fax – номер факсимильного аппарата, который использует текущий пользователь;
-title – должность пользователя в данной организации;
-dept – этот параметр позволяет указать наименование отдела, в котором работает данный пользователь;
-company – название компании, в которой работает создаваемый пользователь;
-hmdir – основной каталог пользователя, в котором будут расположены его документы;
-hmdrv – путь к сетевому диску, на котором будет размещена домашняя папка учетной записи
-profile – путь профиля пользователя;
-mustchpwd – данный параметр указывает на то, что при последующем входе в систему пользователь обязан изменить свой пароль;
-canchpwd – параметр, определяющий, должен ли пользователь изменять свой пароль. Если значением параметра указано «yes», то у пользователя будет возможность изменения пароля;
-reversiblepwd – текущий параметр определяет хранение пароля пользователя с применением обратного шифрования;
-pwdneverexpires – параметр, указывающий на то, что срок действия пароля никогда не истечет. Во всех этих четырех параметрах, значениями могут выступать только «yes» или «no»;
-acctexpires – параметр, определяющий, через сколько дней срок действия учетной записи истечет. Положительное значение представляет собой количество дней, через которое учетная запись истечет, а отрицательное означает, что срок действия уже закончен;
-disabled – указывает, что учетная запись уже отключена. Значениями для этого параметра также выступают «yes» или «no»;
-q – указание тихого режима для обработки команды.
Пример использования:
Dsadd user “cn=Алексей Смирнов,OU=Маркетинг,OU=Пользователи,DC=testdomain,DC=com” -samid Alexey.Smirnov -upn Alexey.Smirnov -pwd * -fn Алексей -ln Смирнов -display “Алексей Смирнов” -tel “743-49-62” -email Alexey.Smirnov@testdomain.com -dept Маркетинг -company TestDomain -title Маркетолог -hmdir \\dc\profiles\Alexey.Smirnov -hmdrv X -mustchpwd yes -disabled no
Рис. 6. Создание пользовательской учетной записи средствами утилиты Dsadd