Get-ADUser позволяет получить информацию о пользователе Active Directory, его атрибутах и выполнять поиск среди пользователей домена. Это один из наиболее популярных командлетов PowerShell для получения информации из AD. С помощью командлета Get-ADUser можно получить значение любого атрибута учетной записи пользователя AD, вывести список пользователей в домене с нужными атрибутами, экспортировать отчеты по пользователям в CSV файлы, и использовать различные критерии для выборки доменных пользователей.
- Командлет Get-ADUser в модуле PowerShell Active Directory
- Get-ADUser: поиск пользователя AD и вывод атрибутов
- Получение пользователей из нескольких OU с помощью Get-ADUser
- Получить Email адреса пользователей из AD
- Get-ADUser: экспорт списка пользователей в текстовый или CSV/Excel файл
- Get-ADUser –Filter: Поиск и фильтрация списка пользователей AD
- Часто используемые примеры команд с Get-ADUser для получения информации о пользователях AD
Командлет Get-ADUser в модуле PowerShell Active Directory
Комадлет Get-ADUser входит в специальный модуль для работы с Active Directory — Active Directory Module for Windows PowerShell. Командлеты модуля RSAT-AD-PowerShell позволяют выполнять различные операции с объектами каталога AD.
В этом примере мы покажем, как с помощью командлета PowerShell Get-ADUser получить информацию о времени последней смены пароля пользователя, когда истекает срок действия пароля и другие данные пользователей.
Для использования модуля RSAT-AD-PowerShell нужно запустить консоль PowerShell с правами администратора и импортировать модуль командой:
Import-Module activedirectory
В Windows Server 2012 и выше модуль
RSAT-AD-PowerShell
устанавливается по-умолчанию при развертывании на сервере роли Active Directory Domain Services (AD DS). Для установки модуля на рядовом Windows Server в домен, выполните команду:
Install-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature
В десктопных версия Windows 10 и 11 для работы коммандера Get-AdUser нужно установить соответствующую версию RSAT. Установить RSAT можно через Settings -> Apps -> Optional Features -> Add a feature -> RSAT: Active Directory Domain Services and Lightweight Directory Services Tools.
Также вы можете установить модуль AD с помощью PowerShell:
Add-WindowsCapability –online –Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”
Если на компьютере не установлен модуль RSAT-AD-PowerShell, то при запуске команды Get-ADUser появится ошибка:
get-aduser : The term 'get-aduser' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Проверьте, что модуль установлен, и если нужно, импортируйте его в свою сессию PowerShell:
Import-Module ActiveDirectory
Import-Module "C:\PS\ADPoSh\Microsoft.ActiveDirectory.Management.dll"
Import-Module "C:\PS\ADPoSh\Microsoft.ActiveDirectory.Management.resources.dll"
Полный список всех аргументов командлета Get-ADUser можно получить так:
help Get-ADUser
Get-ADUser: поиск пользователя AD и вывод атрибутов
Чтобы вывести список всех учетных записей домена, выполните команду:
Get-ADUser -filter *
Чтобы вывести свойства только определенного пользователя, используется параметр –Identity. В качестве Identity можно указать имя пользователя, имя входа (SAMAccountName), DN (Distinguished Name), SID или GUID.
Следующие команды вернут одинаковый результат об одном и том же пользователе:
Get-ADUser –Identity a.ivanov
Get-ADUser –Identity "CN=Andrey A. Ivanov,OU=Users,OU=SPB,OU=RU,DC=winitpro,DC=loc"
Get-ADUser –Identity "Andrey A. Ivanov"
По-умолчанию командлет Get-ADUser возвращает только 10 основных атрибутов (из более чем 120 свойств учетных записей пользователей): DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, статус аккаунта (Enabled: True/False согласно атрибуту UserAccountControl), и т.д.
В выводе командлета отсутствует информация о времени последней смены пароля пользователя.
Get-ADUSer –Server DC01.winitpro.loc –Identity tstuser
Если нужно получить данные из другого домена, нужно указать имя сервера и учетные данные для доступа к нему:
$cred = Get-Credential
Get-ADUSer tstuser -Server DC01.newdomain.ru -Credential $Cred
Чтобы вывести полную информации обо всех доступных атрибутах пользователя tuser, выполните команду:
Get-ADUser -identity tuser -Properties *
Командлет Get-ADUser с параметром Properties * вывел список всех атрибутов пользователя AD и их значения (включая пустые). Аналогичный список атрибутов пользователей доступен в графической консоли Active Directory Users and Computers (
dsa.msc
) на вкладке редактора атрибутов.
В командлете Get-ADUser можно список атрибутов пользователя, которые нужно выводить. Например, вы хотите вывести значения следующих атрибутов:
- PasswordExpired
- PasswordLastSet
- PasswordNeverExpires
- lastlogontimestamp
Выполните команду:
Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestamp
Теперь в информации о пользователе есть данные о статусе аккаунта (Expired: True/False), дате смены пароля и времени последнего входа в домен (lastlogontimestamp). Представим информацию в более удобном табличном виде и уберем все лишние атрибуты с помощью Select-Object –Property или Format-Table:
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires
Получение пользователей из нескольких OU с помощью Get-ADUser
Чтобы вывести пользователей только из определенного контейнера домена (Organizational Unit), воспользуйтесь параметром SearchBase:
Get-ADUser -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires
Если вам нужно выбрать пользователей сразу из нескольких OU, используйте следующую конструкцию:
$OUs = "OU=Moscow,DC=winitpro,DC=local","OU=SPB,DC=winitpro,DC=loc"
$OUs | foreach {Get-ADUser -SearchBase $_ -Filter * |select Name, Enabled}
Получить Email адреса пользователей из AD
Email пользователя это один из атрибутов в Active Directory. Чтобы вывести список email адресов пользователей, вы должны добавить поле EmailAddress в атрибуты, отображаемые командлетом Get-ADUser.
Get-ADUser -filter * -properties EmailAddress -SearchBase ‘OU=MSK,DC=winitpro,DC=loc’| select-object Name, EmailAddress
Вывести список активных пользователей с почтовыми адресами:
Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Table
Список пользователей, у которые не задан email адрес:
Get-ADUser -Filter * -Properties EmailAddress | where -Property EmailAddress -eq $null
Следующий пример позволяет выгрузить адресную книгу email адресов компании в виде csv файла, который в дальнейшем можно импортировать в Outlook или Mozilla Thunderbird:
Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\mail_list.csv
Get-ADUser: экспорт списка пользователей в текстовый или CSV/Excel файл
Полученный список пользователей домена с атрибутами можно выгрузить в текстовый файл:
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt
Или вы можете выгрузить пользователей AD в файл CSV, который в дальнейшем будет удобно экспортировать в Excel.
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | select Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\temp\user-password-expires-2019.csv -Append -Encoding UTF8
Get-ADUser –Filter: Поиск и фильтрация списка пользователей AD
С помощью параметра –Filter вы можете фильтровать список пользователей по одному или нескольким атрибутам. Это удобно использовать для поиска пользователей в AD, чьи атрибуты соответствуют указанным критериям. В качестве аргументов этого параметра можно указать значения определённых атрибутов пользователей Active Directory. При использовании параметра –Filter командлет Get-ADUser выведет только пользователей, которые соответствуют критериям фильтра.
Например, выведем список активных (Enabled) учётных записей пользователей, чье имя содержит «Dmitry». В примере ниже используется множественный фильтр, вы можете комбинировать условия с помощью стандартных логических операторов сравнения PowerShell. В данном примере атрибуты пользователей должны удовлетворять обоим условиям фильтра (-and):
Get-AdUser -Filter "(Name -like '*Dmitry*') -and (Enabled -eq 'True')" -Properties * |select name,enabled
Можно использовать все логические операторы PowerShell для выбора значений атрибутов пользователей (
-eq
,
-ne
,
-gt
,
-ge
,
-lt
,
-le
,
-like
,
-notlike
,
-and
,
-or
, и т.д.)
Дополнительно с помощью Sort-Object вы можете отсортировать полученный список пользователей по определенному атрибуту. Кроме того, для выборки пользователей можно использовать командлет Where-Object. Здесь также можно использовать сразу несколько критериев фильтрации.
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’| where {$_.name –like “*Dmitry*” -and $_.Enabled -eq $true} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires
Таким образом, можно получить список пользователей с любыми необходимыми атрибутами Active Directory.
Для поиска пользователей сразу по нескольким атрибутам (legacyExchangeDN, proxyAddresses, SAMAccountName, Surname, DisplayName, SamAccountName, physicalDeliveryOfficeName, RDN и msExchMailNickname) можно использовать функцию Ambiguous Name Resolution (
ANR
):
Get-ADUser -Filter {anr -eq ‘Oleg’} | select Name
Вы можете использовать LDAP фильтр в запросах Get-ADUser. LDAP фильтр указывается с помощью атрибута –LdapFilter.
Get-ADUser -LDAPFilter '(&(department=it)(title=devops))'
Часто используемые примеры команд с Get-ADUser для получения информации о пользователях AD
Далее приведем еще несколько полезных вариантов PowerShell запросов о пользователях Active Directory с помощью различных фильтров. Вы можете комбинировать их для получения необходимого списка пользователей домена:
Вывод пользователей AD, имя которых начинается с Roman:
Get-ADUser -filter {name -like "Roman*"}
Чтобы подсчитать общее количество всех аккаунтов в Active Directory:
Get-ADUser -Filter {SamAccountName -like "*"} | Measure-Object
Список всех активных (не заблокированных) учетных записей в AD:
Get-ADUser -Filter {Enabled -eq "True"} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table
Вывести дату создания учётной записи пользователя в домене:
get-aduser -Filter * -Properties Name, WhenCreated | Select name, whenCreated
Вывести всех пользователей, которые были созданы за последние 24 часа (пример отсюда):
$lastday = ((Get-Date).AddDays(-1))
Get-ADUser -filter {(whencreated -ge $lastday)}
Список учетных записей с истекшим сроком действия пароля (срок действия пароля настраивается в доменной политике паролей):
Get-ADUser -filter {Enabled -eq $True} -properties name,passwordExpired | where {$_.PasswordExpired}|select name,passwordexpired
Задача: для списка учетных записей, которые хранятся в текстовом файле (по одной учетной записи в строке), нужно получить телефон пользователя из AD и выгрузить информацию в текстовый csv файл (для дальнейшего формирования отчета в Exсel).
Import-Csv c:\ps\usernsme_list.csv | ForEach {
Get-ADUser -identity $_.user -Properties Name, telephoneNumber |
Select Name, telephoneNumber |
Export-CSV c:\ps\export_ad_list.csv -Append -Encoding UTF8
}
Пользователи, которые не меняли свой пароль в течении последних 90 дней:
$90_Days = (Get-Date).adddays(-90)
Get-ADUser -filter {(passwordlastset -le $90_days)}
Найти неактивные учетные записи пользователей (не входили в домен более 180 дней). Для получения информации об истории входов пользователей в домен используется атрибут lastLogonTimpestamp:
$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } | ?{$_.Enabled –eq $True} | Sort LastLogonTimeStamp| FT Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -AutoSize
Чтобы получить фотографию пользователя из Active Directory и сохранить ее в jpg файл:
$user = Get-ADUser winadmin -Properties thumbnailPhoto
$user.thumbnailPhoto | Set-Content winadmin.jpg -Encoding byte
Список групп, в которых состоит учетная запись пользователя:
Get-AdUser winadmin -Properties memberof | Select memberof -expandproperty memberof
Вывести список пользователей из OU, которые состоят в определенной группе безопасности:
Get-ADUser -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -Filter * -properties memberof | Where-Object {($_.memberof -like “*WKS admins*”)}
Вывести всех пользователей из OU, кроме членов определенной группы:
$Users = Get-ADUser -filter * -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -properties memberOf
ForEach ($User In $Users)
{
$Groups = -join @($User.memberOf)
If ($Groups -notlike '*Domain Admins*')
{
$User.Name
}
}
Экспортировать пользователей из AD со указанием имени OU в графическую таблицу Out-GridView:
get-aduser -filter * -Properties cn,canonicalname | select name,userprincipalname,@{Name="OU";expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}| Out-GridView
Проверить, что пользователь AD существует:
$SamAccountName='a.ivanov2'
if (@(Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0)
{ Write-Host "Пользователь $SamAccountName не существует"}
Вывести список компьютеров домена, на которые разрешено входить пользователю (ограничение через атрибут LogonWorkstations):
Get-ADUser AIvanov -Properties LogonWorkstations | Format-List Name, LogonWorkstations
Ох і довжина команд
OU=Moskow аж режет глаз
Да, спасибо поправил. Торопился 🙂
а Excel не режет??
Нет, а должен?
А как сделать выборку польлзователей не всего домена, а конкретного контейнера/папки этого домена?
Т.е. к примеру, есть домен REGION, под ним папки-контейнеры с названием каждого региона и его пользователей, как сделать выборку пользователей контейнера, на пример, SAMARA?
В статье описано как фильтровать пользователей по контейнерам Active Directory (OU), для этого воспользуйтесь аргументом SearchBase, например так:
Get-ADUser -SearchBase ‘OU=Samara,DC=company,DC=com’ -filter *
Добрый день. Вопрос касательно OU, если есть в каталоге самара под папки
копютеры, пользователи. А в папке пользователи есть папки с отделами. И как подсчитать каждую папку отдела по отдельности
Заранее благодарю
Оказалось очень просто. Get-ADUser -SearchBase ‘OU=X… … OU=3,OU=2,OU=1,OU=Samara,DC=company,DC=com’ -filter *
Примечение OU=X … … 3,2,1 Это подкаталоги samara.
Прошу прощения, что лезу в старый пост, есть вопрос по этой теме, если, например, в OU Samara есть пользователи, то да, их можно этой командой получить, но если в контейнере есть ещё подконтейнеры, то мы получим и пользователей, которые находятся в них. Как сделать так, чтоб получить только тех, кто находится непосредственно в Samara, исключив тех, что в подконтейнерах?
Используйте -SearchScope OneLevel
Get-ADUser -Filter * -SearchBase "OU=Users,OU=Samare,OU=RU,DC=winitpro,DC=loc" -SearchScope OneLevel
Поделюсь примером скрипта, когда на входе подается список учетных записей AD из csv файла, а на выходе нужно получить значение поля Компания (Company):
Import-Csv c:\install\ps\sap_user.csv | ForEach {
Get-ADUser -identity $_.user -Properties Name, company |
Select Name, company |
Export-CSV c:\install\ps\export_ad_info.csv -Append -Encoding UTF8
}
Добрый день!
А как сделать выборку пользователей, кто давно не логинился в домене?
Извиняйте за поздний отв
ет.
get-aduser -filter {enabled -eq "True"} -properties LastlogonDate | ? {$_.lastlogondate -le (get-date).adddays(-90)}
где 90 количество дней.
Извиняйте за поздний вопрос, LastlogonDate не меняется если пользователь залогинися на компьютер и работает без перезагрузки месяц, но станцию блокирует, такое бывает. а как найти пользователей, которые не аутентифицировались (я так понимаю что при разблокировке станции именно это и происходит) последние N дней?
задача отсеять в AD неактивных пользователей.
разобрался. лучше использовать параметр LastLogonTimestamp
get-aduser -properties LastLogonTimestamp | ft Name, @{n=’LastLogonTimestamp’;e={[DateTime]::FromFileTime($_.LastLogonTimestamp)}}
он не меняется постоянно при логине по причине репликации между контроллерами в периоде от 9 до 14 дней.
Все верно, LastLogonTimestamp в отличии от LastLogon реплицируется в домене (но с задержкой 14 дней). ЧТобы отловить, учетки неактивные долгое время он вполне подходит.
Здравствуйте, подскажите пожалуйста а как выгрузить в CSV?
Учетные записи созданные. допустим с 01.01.2015. Удалось получить список учеток командой
$MDate = ((Get-Date).AddDays(-299)).Date
Get-ADUser -Filter {whenCreated -ge $MDate} -property whencreated|sort name|ft name,samaccountname,whencreated -AutoSize
а выгрузить в ехсель не получается.
Попробуйте добавить в конце второй строки: | Out-File c:\scripts\aduser.csv
Спасибо большое. Помогло
$MDate = ((Get-Date).AddDays(-300)).Date
Get-ADUser -Filter {whenCreated -ge $MDate} -property whencreated|sort name|ft name,samaccountname,whencreated –AutoSize |out-file “C:\Temp\users.csv”
Здравствуйте, подскажите есть ли возможность просмотреть кто из админов менял пароль юзера с датой конечно.
С помощью Get-ADUser этого сделать не получится, т.к. данная информация в AD не хранится. Единственный способ поиска учетки, из-под которой был сброшен пароль пользователя, поиск в журнале безопансоти контроллеров домена (всех DC!!!, т.к. журналы независимы)событий с Event ID:
4738: A user account was changed
4724: An attempt was made to reset an accounts password
Это будет рабоать при условии, что включена политика аудита Windows Settings → Security Settings → Local Policies → Audit Policy:
Audit account management
Спасибо.
Помогите пожалуйста, очень нужно.
Как сделать выгрузку в csv по параметрам:
Общие=> (имя; выводимое имя; Описание )
Организация => ( Организация )
Учётная запись => ( Имя входа пользователя ; параметры учётной записи => Запретить смену пароля пользователем, срок действия пароля не ограничен; Срок действия учётной записи задавать или ставить «Никогда»)
Или хотя бы ссылки на материал где можно это быстро просмотреть.
Оч нужно.
Строка для получения данного списка из определенной OU домена
Get-ADUser -SearchBase ‘OU=Users,OU=London,DC=winitpro,DC=ru’ -filter * -properties displayName, company, sAMAccountName, userAccountControl | ft displayName, company, sAMAccountName, userAccountControl | Export-csv -path c:\temp\users2016.csv
Расшифровать данные флагов поля userAccountControl можно с помощью статьи https://winitpro.ru/index.php/2018/05/14/convertaciya-atributa-useraccountcontrol-v-ad/
Подскажите почему при экспорте в csv полей CN и Name в результате вместо имен одни вопросительные значки в полученном csv.
Проблема с русской кодировкой. В качетсве аргумента функции Export-csv добавьте -Encoding UTF8
Мне выдал результат поиска по началу имени только последние 16 УЗ. Как получить все остальное?
Показывайте команду 🙂
Здравствуйте!
Вставляю команду «Список всех активных (не заблокированных) учетных записей в AD», а мне выдают тех пользователей, которые отключены(т.е. не активны).
А как получить кол-во (и список) юзеров с сортировкой по полю Company?
Выбрать пользователей и сортировать по полю company
get-aduser -filter {Enabled -eq "true"} -properties company | select name,company | sort company
Посчитать сколько пользователей в каждой из кампаний работает.
get-aduser -filter {enabled -eq "true"} -properties company | select company | Group-Object company | select count,name | sort count,name
Народ подскажите как можно из Ad выгрузить пароли пользователей.
Пароли из AD выгрузить не получится. В открытом виде они не хранятся, в базе есть только их кеши.
Впрочем при наличии хорошего словаря, пароли все-таки можно добыть: https://winitpro.ru/index.php/2016/09/20/audit-active-directory-password/
Добрый!
Есть возможность выгрузить из АД инфу о последнем времени, когда юзер логинился для получения почты?
Для получения данных о входе в ящик придется воспользоваться командлетом Exchange — Get-MailboxStatistics. Вам нужно поле LastLogonTime.
Пример комбинации команд:
(Get-ADUser petrov).SamAccountName|Get-MailboxStatistics
Добрый день. Подскажите пожалуйста, как правильно составить команду:
вывести пользователей по списку значений атрибута из файла. т.е., как в цикле прогнать команду, подставляя в каждый прогон фильтра следующее значение из файла. Спасибо
Т.е. нужно для каждого значения из файла выпонить команду?
Попробуйте такой скрипт. В файле Users.txt содержится список пользователей
$Users = gc «c:\PS\Users.txt»
foreach ($User in $Users) {
Get-ADUser -Identity $User -Properties *|select-object company
}
Товарищи, подскажите, как вывести имя ПК по последнему входу учетной записи.
Т.е. есть учетка в АД и по ней надо найти ласт логон на ПК или все ПК неа которые учетка логинилась после её создания.
Спасибо.
Добрый день! из-за чего атрибуту Enabled не присваивается значение? Точнее он не меняется при отключении подключении уч.записи.
из-за этого команда
Список всех активных (не заблокированных) учетных записей в AD:
Get-ADUser -Filter {Enabled -eq «True»} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table
работает неверно.
все оказалось просто. Ps -нужно запускать с правами Администратора.
Подскажите как выгрузить список всех пустых контейнеров (OU) содержащихся в заданном контейнере (OU) ?
Вопрос не по теме, но коль уж спросили
Get-ADOrganizationalUnit -Filter {name -like «*moscow*»}| Where-Object {-not ( Get-ADObject -Filter * -SearchBase $_.Distinguishedname -SearchScope OneLevel -ResultSetSize 1 )}
Добрый день. Есть множество примеров запросов как выбрать пользователей из определенного OU и входящих в определенную группу. Подскажите пожалуйста как выбрать пользователей из OU кто НЕ входит в определенную группу (к примеру «Student»). Спасибо.
Добрый день! Я бы сделал так:
Выбираем список пользователей определенной OU, фильтруем по атрибуту memberof. Условие — пользователь не должен состоять в указаннйо группе.
Get-ADUser -SearchBase ‘OU=Users,OU=HQ,DC=corp,DC=winitpro,DC=ru’ -Filter * -properties memberof | Where-Object {!($_.memberof -like «*domain-admins*»)}
Лучшая статья
Добрый день.
Есть ли какие-нибудь командлеты, что собирать ту же информацию о пользователях(локальных) , НО компы не домене.
Доброго дня.
Именно в таком виде не получится, конечно. Как минимум, практически никто не указывает никакую информацию для локальных учетных записей.
В теории можно с помощью PowerShell обойти список ПК по списку и собрать информацию о всех локальных учетных записях и сохранить ее в csv/excel файл.
Попробуйте посмотреть в сторону командлета Get-LocalUser (PowerShell 5.0):
Invoke-Command -ComputerName remotePc1 -ScriptBlock {get-localuser}
Либо через CIM :
get-ciminstance win32_useraccount | Select Name,Description,Status,Disabled,AccountType
Доброе время суток форумчане. Возникла не тривиальная задача. И поскольку я в этом совершенно ничего не смыслю вынужден просить вашей помощи. Есть группа пользователей. Необходимо автоматизировать добавление каждому сотруднику этой группы компьютеров из определенной OU в поле LogonWorkstations. Полагаю для начала надо выгрузить список компьютеров из OU, после чего в запросе подтягивать загрузку из файла.
Get-ADComputer -filter * -SearchBase "OU=Dema,OU=DopOffice_Ufa,OU=update,DC=bksb,DC=ru" | Where-Object {$_.enabled -eq $true} | Select-Object -Property Name | Export-csv -path C:\Temp\OUcomputers.csv -NoTypeInformation -Encoding UTF8
.Далее результат добавить в конец запроса
Get-ADGroupMember -Identity "BuhgalterKassir" -Recursive | Set-ADUser -LogonWorkstations
Попробовал конструкцию типа
Import-Module ActiveDirectory
$complist = Import-Csv -Path "C:\Temp\OUcomputers.csv" | ForEach-Object {$_.NetBIOSName}
foreach ($comp in $complist) {
Set-ADUser -Identity username -LogonWorkstations $comp
}
Запрос отработал, но в результате в Logon to прописан доступ все так же на все компьютеры.
У вас почти все получилось. Немного допилил ваши запросы. У меня получился такой код для добавления компьютеров из указаной OU в поле LogonWorkstations всем пользователям из группы UnixAdmin:
$ws="0"
Get-ADComputer -filter * -SearchBase "ou=servers,DC=winitpro,DC=loc" | Where-Object {$_.enabled -eq $true} |
ForEach-Object {
$ws=$ws + ","+ $_.Name
}
Get-ADGroupMember -Identity "UnixAdmin" -Recursive | Set-ADUser -LogonWorkstations $ws
Еще несколько примеров использования атрибута LogonWorkstations для управления доступом пользователей к компьютерам здесь:
https://winitpro.ru/index.php/2018/08/07/kak-razreshit-zapretit-polzovatelyam-vxod-na-kompyutery-v-domene/
Все это будет работать, если вы захотите добавить в список разрешенных не более 64 ПК. На поле LogonWorkstationsесть жесткое ограничение Active Directory — не более 64 элементов.
Забыл добавить, у меня несколько OU откуда нужно подтягивать компьютеры.
изменить значение атрибута rangeUpper CN=User-Workstations схемы на 8192
Скрипт отрабатывает, но прописывает ко всему прочему 0 в начало списка.
По идее надо затирать первую строку в виде 0, далее добавлять компьютеры.
Можно ли одним запросом выбрать пользователей определенной OU у которых одинаковый атрибут email?
Попробуйте так: Get-ADUser -SearchBase ‘OU=Clients,DC=mydomain,DC=ru’ -Filter {mail -like ‘*’}
Добрый день!
Какой командой можно узнать логины пользователей зная их ФИО (список)?
В каком атрибуте пользователя в AD у вас хранится ФИО? Или речь о нескольких атрибутах (givenName, middleName, sn)?
ФИО на русском и нужно ли делать транслитерацию?
По одной записи удается получить информацию командой get-aduser -filter {displayname — lake «ФИО»} | select*, а получение инфы по списку трудности. givenName — имя, .sn — фамилия. ФИО — список на русском.
Как-то так:
В текстовом файле user_list.txt хранится список ФИО. Для каждой строки из файла выполняем поиск в AD по полю displayName и выводим displayName и имя учетной записи.
$Users = gc "C:\ps\user_list.txt"
foreach ($User in $Users) {
Get-ADUser -Filter {displayName -like $User} -Properties * |select-object displayName,sAMAccountName
}
Благодарю за помощь.
Как с удаленного ПК выгрузить security log за определенную прошедшую дату и ограниченный временной интервал?
Проще всего это сделать через PowerShell. Используется командлет Get-EventLog:
Get-EventLog -ComputerName msk-server1 -LogName Security -After 08/08/2018 -Before 12/09/2018
Или так:
Get-EventLog -ComputerName msk-server1 -LogName Security -After (Get-Date -Date 08/08/2018 14:31:00′) -Before (Get-Date -Date ’12/09/2018 15:00:00’)
Добрый день! Вопрос: как зная учетные записи пользователей (name, список) и целевую маску групп в AD (например, group*) на выходе получить выборку сотрудников (список), которые находятся в указанных группах?
Как-то так (список учеток в тектсовом файле):
$group = «CN=group,ou=russia,dc=winitpro,dc=ru»
$users=get-content (c:\ps\users.list)
Foreach ($user in $users) {
if ((Get-ADUser $user -Properties memberof).memberof -like $group )
{
# Если в группе
echo $user
}
Else
# Не входит в группу
{
echo «False»
}
}
Почему данная конструкция с -contains не работает?
Мне нужны имена и телефоны активных пользователей, которые являются членами определенной группы Х
Get-ADUser -SearchBase «атата» -Filter {(officephone -ne «null») -and (Enabled -eq «true») -and (Memberof -contains «Х»)} -properties Name, officephone | sort-object Name | select-object Name, officephone
Скажите а как выбрать пользователей у которых в поле Name только русские символы, чтобы отсеять служебные учетные записи?
Вопрос снят.
И как вы фильтровали по русским символам? Почему-то мне кажется, что проще выгрузить все в Excel и отфильтровать. Либо переместить служебные учетки в отдельную OU — обчыно это рекомендуется делать.
Прошу прощения только сейчас увидел сообщение, для отсева использовал фильтр вида:
-Displayname "[А-Я]*"
Что-то у меня в .csv какая то билибирда выходит в скрипте:
Get-Content .\users.txt | ForEach {
if($_ -match $regex)
{
Get-ADUser -identity $_ -Properties CanonicalName,emailaddress | ft name,SamAccountName,EmailAddress,CanonicalName | Export-CSV .\users.csv -Append -Encoding UTF8
}
}
выходит:
#TYPE Microsoft.PowerShell.Commands.Internal.Format.FormatStartData
ClassId2e4f51ef21dd47e99d3c952918aff9cd,»pageHeaderEntry»,»pageFooterEntry»,»autosizeInfo»,»shapeInfo»,»groupingEntry»
033ecb2bc07a4d43b5ef94ed5a35d280,,,,»Microsoft.PowerShell.Commands.Internal.Format.TableHeaderInfo»,
9e210fe47d09416682b841769c78b8a3,,,,,
27c87ef9bbda4f709f6b4002fa4af63c,,,,,
4ec4f0187cb04f4cb6973460dfe252df,,,,,
cf522b78d86c486691226b40aa69e95c,,,,,
033ecb2bc07a4d43b5ef94ed5a35d280,,,,»Microsoft.PowerShell.Commands.Internal.Format.TableHeaderInfo»,
9e210fe47d09416682b841769c78b8a3,,,,,
27c87ef9bbda4f709f6b4002fa4af63c,,,,,
4ec4f0187cb04f4cb6973460dfe252df,,,,,
cf522b78d86c486691226b40aa69e95c,,,,,
оказалось | ft не совместим с Export-CSV
Добрый день, вместо ft дайте в «трубу» селект.
| select Name, extensionAttribute2, Enabled | Export-Csv -Path "D:\managers.csv" -NoTypeInformation -Delimiter ";" -Encoding UTF8
пытаюсь получить список активных сотрудников с номерами телефонов и других идентификаторов,
Get-ADUser -Filter {Enabled -eq "True"} | Select-Object DisplayName,HomePhone | Format-Table
но ничего не выводится, хотя если запустить команду о сущ. полях,
Get-ADUser -identity tuser -properties *
по конкретному пользователю, то выводятся все поля корректно и эти поля тоже заполнены там.
DisplayName,HomePhone
Судя по всему вы в первой команде забыли указать
-properties *
:Get-ADUser -Filter {Enabled -eq "True"} -properties *| Select-Object DisplayName,HomePhone | Format-Table
Спасибо, вы правы, параметр помог)
А как найти всех пользователей AD, которые могут менять пароль хотя бы одному другому (т.е. не себе) пользователю AD?
Доброго времени суток, у меня возникла проблема с выводом пользователей из определенной группы в AD. Задача следующая, необходимо вывести список пользователей в данной группе, а так же вывести остальные группы в которых состоят эти пользователи.
Get-ADUser -Filter {Memberof -eq "CN=Analyst,OU=DKO,OU=Roles,OU=ZOE,OU=werbi,DC=portal,DC=my,DC=ru"} -Server portal.my.ru -Properties Name, SamAccountName, MemberOf | select Name, SamAccountName, @{Name='MemberofGroup'; e={ ($_.MemberOf | Get-AdGroup | sort name | foreach {$_.name}) } }
Сценарий взят на просторах инета, и допилян под свои нужды. Можете подсказать что значит конструкция: @{Name=’MemberofGroup’; e={ ($_.MemberOf | Get-AdGroup | sort name | foreach {$_.name}) }
Так как, если выполняю данную конструкцию, то список групп не выводится
Попробуйте так:
$groupDN = Get-ADGroup -Identity 'Domain Admins' | Select-Object -ExpandProperty DistinguishedName
Get-ADUser -Filter { Memberof -eq $groupDN} -Properties Name, SamAccountName, MemberOf | select Name, SamAccountName, @{Name='MemberofGroup'; e={ ($_.MemberOf | Get-AdGroup | sort name | foreach {$_.name}) } }
Спасибо помогло, есть ещё один вопрос. Есть группа(универсальная) в ней состоят несколько пользователей из разных доменов(есть так называемый лес) выполняю команду типа:
Get-ADGroupMember -Identity 'Domain Admins' | Where {$_.distinguishedName -match "DC=vip,DC=site,DC=ru";"DC=portal,DC=site,DC=ru" -and $_.objectClass -eq "user"} | select name, samaccountName | sort name, samaccountName
Выводит список пользователей, но проблема в том что, нужно вывести список групп в которых они состоят,
но к сожалению командлет Get-ADGroupMember ничего не знает про memberOf.
Скорее всего нужно так же присваивать переменные через $ правильно я понимаю?
Так же нашел командлет: get-adprincipalgroupmembership -Identity Administrators -ResourceContextServer my.ru -ResourceContextPartition «DC=my,DC=ru»
Но она ничего не выводит.
Заранее спасибо, где у вас тут кнопка поблагодарить?
Коллеги помогите в следующей задаче. Нужно экспортировать всех активных пользователей из АД в csv фаил со следующими параметрами: логин , пароль, email, должность, и в какой группе OU он относится.
Пароль пользователя не получится получить из AD. Все остальное:
Get-ADUser -Filter {(Enabled -eq "true")} -Properties sAMAccountName,mail,title,distinguishedName | Select-Object sAMAccountName,mail,title,distinguishedName| Export-csv -path c:\ps\users.csv
Добрый день! Подскажите пожалуйста как выгрузить список пользователей, которые не логинились 90 дней с ограниченным сроком пароля.
Что вы иметее под «с ограниченным сроком пароля» — пользователи, у которых не включена галка «Password never expires»? В этом случае можно такую команду на выборку:
$90_Days = (Get-Date).adddays(-90)
get-aduser -Filter {(passwordNeverExpires -eq "false") -and (Enabled -eq "true") -and (LastLogonTimeStamp -le $90_Days)} -properties Name, PasswordNeverExpires,LastLogonTimeStamp
Да, Вы правильно поняли. Огромное спасибо!
Появилась еще одна хотелка. В последнее время большая текучка, поэтому часто приходится переделывать журнал паролей. Поэтому можно ли формировать список пользователей с групировкой по отделами и сортировкой по ФИО?
Т.е. нужно получить список вида:
Отдел1
ФИО сотрудника1 Логин1
ФИО сотрудника2 Логин2
Отдел2
ФИО сотрудника3 Логин3
ФИО сотрудника4 Логин4
В идеале вообще в формате ворда. Хотя насколько я понял такое не реально.
Пока сделал так:
# получаем список ФИО пользователей с указанием отдела и кабинета, с сортировкой сначала по отделу, потом по ФИО
#подключаем оснастку для работы с AD
Add-pssnapin Quest.ActiveRoles.ADManagement
cls #очищаем экран
get-QADUser -SearchRoot 'CN=Users,DC=cityarch,DC=local' -Displayname "[А-Я]*" | sort-object Department, DisplayName | Select-Object `
DisplayName, Department, physicalDeliveryOfficeName | Export-CSV -delimiter ";" -path "C:\ADUsers_list.csv" -Encoding UTF8
Вы используете командлет get-QADUser — он не стандартный (из довольно старого и уже не поддерживаемого модуля от Quest sowtware). В принципе все тоже самое может и стандартный get-aduser.
Добрый день!
Подскажите пожалуйста, нужно сохранить сформированный список пользователей в AD каждого пользователя(имя, должность, фото) в отдельный файл?
Как реализовать?
Как я понял нужно сохранить фото каждого пользователя в отдельный jpg файла, и информации о имени и должности в другой файл с именем пользователя. Вот простой вариант:
$ADusers=Get-ADUser -Filter {.................} -Properties *
foreach ($ADuser in $ADusers) {
$photofilename = $ADuser.SamAccountName + ".jpg"
$userinfoname = $ADuser.SamAccountName + ".txt"
$ADuser.displayName + " ; " + $ADuser.title | Out-File c:\ps\$userinfoname
}
Спасибо! Вариант отличный, а можно объединить фото и юзера в один файл HTML?
В скрипте PowerShell формируйте HTML строку , которую вы хотите сохранить в файл, В тег
поместите путь к файлу с фото пользователя.
Потом делайте | Out-File в файл с расширением html.
Это как?
Пожалуйста очень нужно сделать как у Сергея,
т.е. выгрузить данные в формате html в виде отдельных файлов на каждого пользователя: где будет Имя, фамилию; Название подразделения; Должность; и самое сложное — Фотографию, сюда же.
Здравствуйте! Подскажите почему командлет Get-ADUser не возвращает значение некоторых параметров, например mailNickname или msExchHideFromAddressLists. Эти параметры были добавлены при расширении схемы для управления пользователями в Office 365
Добрый день.
Вот так пробовали?
get-aduser username -properties *| select mailNickname, msExchHideFromAddressLists
Домен без Office365, но с Exchange — все атрибуты присутствуют.
Попробовал — возвращает пустые значения. Хотя в оснастке в поле mailNickname есть значение, а msExchHideFromAddressLists — TRUE
проверял нескольких пользователей
У вас настроена синхронизация AD с Azure? Эти атрибуты синхронизируются?
Попробуйте изменить атрибут так и проверить, изменится ли он в AD:
$user = Get-ADUser usvername –properties *
$user.msExchHideFromAddressLists = “True”
Set-ADUser –instance $user
Синхронизация настроена в одностороннем порядке и эти атрибуты работают, то-есть собственно говоря пользователь из списка контактов в оутлуке пропадает. Все изменения проводятся только в AD «на земле» При попытке изменить что-то в облаке (как через веб интерфейс так и через Powershell) заканчиваются ошибкой.
«Этот пользователь синхронизирован с вашей локальной службой Active Directory. Некоторые сведения можно изменить только в локальной службе Active Directory.»
надоело руками каждый раз искать эти атрибуты в редакторе, дай думаю скриптик сделаю в три строчки… и уткнулся в стену) как обычно в принципе))
Прошу прощения за свою невнимательность и несообразительность — все оказалось до безобразия просто — достаточно запустить сеанс PS с правами администратора — тогда эти параметры и читаются без проблем и соответственно заменяются. С толку сбило то, что остальные параметры читаются без повышенных привилегий, а вышеописанные возвращались пустыми, без ошибок. Спасибо!
по департаментку :Get-ADUser -Filter {department -eq «ХХХХХХХХ» -and enabled -eq $true}
Как выгрузить список сотрудников у которых установлен определённый принтер
Здесь вам Get-AdUser поможет только получить список пользвоателей.
Вам в любом случае придется перебирать все компьютеры в домене или OU (Get-Adcomputer). Потом для каждого компьютера получить список установленных принтеров: через (WMI ) или (Invoke-Command + командлет Get-Printer: get-printer |where {$_.name -like «*print-server1*»}). Потом для полученных компьютеров получить список пользовалелей.
Добрый день а как залить в AD свойство mail из CSV файла. Я тут вроде сделал шаблон, но выдает ошибку. Не может импортировать файл. вид файла UserActiveToAD_3.csv:
Name,mail
«Имя__ Фамллл1″,»логин1@домен»
«Имя__ Фамллл2″,»логин2@домен»
«Имя__ Фамллл3″,»логин3@домен»
И сам скрипт
$data = Import-CSV -Path «D:\Temp\UserActiveToAD_3.csv»
Foreach ($user in $data){
Get-ADUser -Filter “Name -eq ‘$($user.Name)’” | Set-ADUser -Replace @{mail = “$($user.mail)”}
}
ошибка в 1 строке 19 символ…
Данные в файле на русском? Проверьте, что кодировка UTF8 и указан правильный путь. Судя по ошибке у вас именно в 1 строке проблема.
Добрый день! Делаю запрос:
PS C:\Users\aaa> Get-ADUser -filter {name -like «admin*»} | Select Name, Description
Учетки выводит, а в описании пусто, хотя в консоли AD описание заполнено. Помогите, пожалуйста.
Description — это дополнительный атрибут, нужно добавить
-properties *
:Get-ADUser -filter {name -like "*admin*"} -properties * | Select Name, Description
Спасибо вам, добрый человек )
Добрый день! Вот какая проблема: в течение почти каждого месяца различные отделы (бухи, HR или маркетинг) по выходным (раза 2-3) выходят что-то там работать. Приходится открывать им доступ на эти дни. Немного напрягает. А есть ли возможность с помощью скрипта PS заводить указанных в приказе на работу пользователей, а не лазать по оснастке АД Пользователи и ПК и ставить время входа? И еще хорошо бы время входа тоже заводить (они, бывает, часа на 3-4 выходят, а не на полный день.
Т.е. у вас для всех пользователей заполнен атрибут logonHours. На самом деле возможность AD ограничения по времени входу пользователя используется довольно редко.
Можно проставлять новое время logonHours скриптом (ниже), а в понедельник менять обратно. Главное неудобство — битовый формат времени — придется с ним разобраться.
Получить текущее значение:
get-aduser user -property logonhours | select-object -expand logonhours
Получите нужный формат рабочего времени у настроенного тестового пользователя, а потом примените его для всех по списку из текстового файла:
[byte[]]$hours = @(1,0,0,0,248,255,1,248,255,1,248,255,1,248,255,1,248,255,1,248,255)
$Users =get-content C:\ps\user_list.txt
foreach ($User in $Users) {
set-aduser -identity $User -replace @{logonhours = $hours}
}
Как выбрать всех юзеров кроме админов?
Так не выходит
Get-ADUser -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -Filter * -properties memberof | Where-Object {($_.memberof -notlike “*admin*”)}
Так?
$Users = Get-ADUser -filter * -properties memberOf
ForEach ($User In $Users)
{
$Groups = -join @($User.memberOf)
If ($Groups -notlike '*Domain Admins*')
{
$User.Name
}
}
Добрый день!
Как можно выгрузить список пользователей домена с принадлежностью к группам?
То есть:
Пользователь 1:
Группа 1
Группа 2
———
Группа n
Пользователь 2:
Группа 1
Группа 2
———
Группа n
Попробуйте так:
Get-aduser -filter *| Get-ADPrincipalGroupMembership | select name
Спасибо — работает! Будем пытаться допилить!
Добрый день!
Хочу сделать временно всем юзерам бессрочный пароль:
Get-AdUser -Filter * | Set-ADUser -PasswordNeverExpires $true
команда выводит- Set-ADUser : Отказано в доступе
Все доступа есть, что может быть или есть какая то другая команда?
У учетной записи, из-под которой вы запускаете команду нет прав на какие-то учетные записи. Вероятно встроенного administrator и прочее.
Делегируйте себе права управления учетками на OU с пользователями (https://winitpro.ru/index.php/2018/12/29/active-directory-delegirovanie-admin-prav/) и включите бессрочный пароль для пользователей из OU:
Get-AdUser -SearchBase ‘OU=Users,OU=RU,DC=winitpro,DC=loc’ -Filter * | Set-ADUser -PasswordNeverExpires $true
Добрый день!
Подскажите как мне в вывести все активные учетки(не заблокированы) где реквизит empoeeid не заполнен?
Как-то странно командлет работает с пустыми значениями null. У меня получилось только так:
Get-AdUser -Filter "Enabled -eq 'True'" -Properties * |where employeeID -eq $null|select name,enabled,employeeID
Добрый день! Помогите, пожалуйста!
Необходимо с определенного OrganizationalUnit в AD вывести значение и экспортировать *.csv.
Значение атрибутов вывести в табличном виде в разрезе:
displayName; userPrincipalName; employeeID; employeeNumber
*Примечание: Атрибут [employeeNumber ] — отобрать только с не заданным значением
В статье все рецепты есть. Соберите их вместе. Или хотя бы покажите, что конкретно у вас не получается.
Для выбора OU используется
-SearchBase
Для фильтра
-Filter {(employeeNumber -ne "123123")
Добрый день! не подскажете как можно отфильтровать сотрудников в AD и вытащить список не входящие в три группы то есть вытащить список имен сотрудников в формате CSV и при этом они не должны входить в группу n1,n2,n3 ?
Если не заморачиваться со сложным скриптом, наверное проще и быстрее сделать 3 CSV списка:
$DomainGroup = (Get-ADGroup 'Domain Admins').DistinguishedName
Get-ADUser -LDAPFilter "(!(memberof=$DomainGroup))"|Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\mail_list.csv
Потом сливаем 3 CSV файла в один Excel и если пользователь в итоговом списке встречается 3 раза, значит он не входит ни в одну из групп.
А допустим можно выгрузить список сотрудников в CSV по такому примеру ФИО и перечисление в какие группы он входит по разному перебирал не получилось а потом в Excel отсортирую ?
1) ФИО; группа1: группа2:группа N
2) ФИО: группа1: группа2:группа N
Добрый день, товарищи!
подскажите, пожалуйста, как в шелле вывести список пользователей с их OU ?
Get-ADUser -filter * -SearchBase ‘…’ а дальше как, подскажите.
Буду очень благодарен
В AD у пользователя нет атрибута в котором указано его родительский OU, наверно проще всего взят за основу distinguishedName
$Users = Get-ADUser -Filter {Enabled -eq $True}
ForEach ($User In $Users)
{
$DN = $User.distinguishedName
$OU = ($DN -Split 'cn=')[1]
$OU
}
спасибо, да, не учёл distinguishedName.
в итоге попробовал сделать через canonicalname:
Get-ADUser -filter * -SearchBase ‘……..’ -properties canonicalname | Select-Object Name, canonicalname | Export-csv -Encoding Unicode -path c:\ps\users.csv
получившийся csv импортирую в эксель и при импорте показываю, что после каждого «/» в документе — делать разбивку в столбец. В итоге получаем ФИО/OU/ФИО. Лишний столбец с ФИО потом удалить в самой эксель
Добрый день, подскажите пожалуйста есть атрибут title в нем содержится русскоязычный текст и при экспорте получаю все значения в виде ??????????, можно ли получить в cvs вывод русского языка?
Прошу прощения поторопился нашел -Encoding utf8
Доброго времени суток.
Подскажите пожалуйста, как можно отобразить только тех пользователей, у которых пароль истекает через 2 дня? Что то не нашел готового ответа а сам додуматься не могу. Спасибо заранее!
Вот статья про получение инфы о дате истечении пароля в ad https://winitpro.ru/index.php/2020/02/25/ad-user-password-expiration/
См. пример в секции «PowerShell скрипт для email-уведомления об истечении срока действия пароля» — там я получа.ю список пользователей, у которых пароль истекает в течении 7 дней
Добрый день! Как получить имена ПК на которых логинился пользователь за последние 30 дней например.
Нет, встроенными средствами это не решается.
Нужно какую то дополнительную систему или скрипты. За основу можно взять вот такое решение https://winitpro.ru/index.php/2019/08/13/set-adcomputer-powershell/
Добрый вечер. Как добавить статический список в разрешённые воркстейшены по ou-шкам или домену — это изи и это работает. Но есть задача чуть сложнее, вожусь долго и без вашей помощи никак не могу сообразить что к чему)
Есть OU с магазинами. Есть пользователи магазинов. Примерно, одна учётка на 3-5 девайсов (ноутбуки, складские пк etc). Им необходимо разрешить доступ к рдс ферме (список session hosts как раз статический, с этим проблем нет) и к самому ноутбуку с которого работает магазин для того, чтобы они смогли залогинеться в свой ноутбук
Есть идея, но не знаю как реализовать — дать отделу тех поддержки задачку запускать скрипт поша для прописывания статического списка, но не знаю как добавить в этот пош скрипт чтобы «выскакивало окно» с запросом ввода ещё одного поле — собсно чтобы в нём указать поле текущего ноутбука
Не понимаю вашу проблему. Или вы неправильно изъяснились.
Доступ к RDS хостам ограничивается через группу доступа в домене (на уровне самого терминального сервера, вам не нужно править для этого LogonWorkstations пользователя). На каждом хосте можно использовать свою группу, если вам так надо.
Про ограничение входа на компы см. здесь https://winitpro.ru/index.php/2018/08/07/kak-razreshit-zapretit-polzovatelyam-vxod-na-kompyutery-v-domene
Обычно создаются обычные группы доступа, туда распихиваются пользователи. В рдс доступ прибивется по группам, например к приложениям, хостам и т.п. Если я правильно понял и на опрделенные машины нужно дать доступ только «кругу ограниченных» — то самый быстрый вариант это тот , что привели выше, Log on to во вкладке Account свойств пользователя.
Добрый вечер, может кто то подсказать, в чем разница между LastLogonTimeStamp и LastLogon и почему эти данные отличаются? Или где можно прочитать описание описание этих параметров.
Эти данные в дальнейшем использую для поиска неактивных учетных записей.
Спасибо.
Значение Lastlogon обновляется только на DC, который выполнил аутентфикацию пользователя. Это атрибут не реплицируется.
Атрибут LastLogontimestamp реплицируется, но не часто (по умолчанию только если его значение более чем 14 дней старше, чем предыдущее значение)
Т.е. если вам нужны актуальные данные у вас один DC в сайте, используйте Lastlogon (либо запрашивайте данные у всех DC).
С помощью LastLogontimestamp получать информацию о метках менн 14 дней давности нет смысла.
Спасибо за разъяснения, но в этом и проблема, так как сперва использовал именно LastLogon, но в итоге заметил, что в пул попадают активные учетные записи, при том что в этой же учетке LastLogonTimeStamp более актуален чем LastLogon.
Пример:
lastlogon 15.09.2020 13:00:18
lastlogontimestamp 28.09.2020 9:51:17
и другая учетка
lastlogon 08.08.2020 9:42:02
lastlogontimestamp 30.09.2020 9:00:05
и получается, что вторая учетка попадает под отключение (берутся учетки неактивные больше 30 дней), а первая на грани)
может стоит сортировать их по другому значению?
Добрый день.
Подскажите, необходимо сделать выгрузку всех пользователей с атрибутом компании «Тест», а так же данные по этим пользователям (компания Тест) — последний раз заходили 120 дней назад. Делаю запрос такого вида, но выдает всех пользоватлей. Спасибо!
Get-ADUser -Filter {company -like «Тест»} -Searchbase «OU=User Accounts Vista,OU=User Accounts,OU=User Directory,DC=1,DC=com» | get-aduser -filter {enabled -eq «True»} -properties LastlogonDate | ? {$_.lastlogondate -le (get-date).adddays(-120)} | Export-Csv -Path C:\1\users.csv
Как-то так должно работать:
Get-ADUser -Filter {(company -like "Тест") -and (enabled -eq "True")} -Searchbase "OU=User Accounts Vista,OU=User Accounts,OU=User Directory,DC=1,DC=com" -properties LastlogonDate | ? {$_.lastlogondate -le (get-date).adddays(-120)} | Export-Csv -Path C:\1\users.csv
Добрый день!
Существуют несколько групп безопасности содержащих в имени «adm».
Подскажите, пожалуйста, как вывести список пользователей, которые являются одновременно членами двух и более таких групп?
т.е. так:
Get-ADUser -Filter {Enabled -eq «True»} -properties memberof | Where-Object {($_.memberof -like «*adm*»)} | sort-object name | ft name
увижу всех не заблокированных пользователей, которые являются членом хотя бы одной группы безопасности, содержащей в имени «adm». Но как не включать в этот список пользователей, который являются членом только одной из групп, содержащей в имени «adm»?
День добрый! Прошу подскажите, необходимо сделать выгрузку всех пользователей с атрибутом, PasswordLastSet, PasswordNeverExpires, lastlogontimestamp, PasswordExpired. Сделал выгрузку командой, но lastlogontimestamp в виде простого набора цифр, как его преобразовать в дату?
Заранее спасибо
get-aduser -filter * -properties PasswordLastSet, PasswordNeverExpires, lastlogontimestamp, PasswordExpired |ft Name, lastlogontimestamp, PasswordLastSet, PasswordNeverExpires,PasswordExpired
Это время в формате timestamp. Для преобразования можно использовать:
Get-ADUser vilenin -Properties Name,lastLogonTimeStamp |
Select-Object Name,@{n='lastLogonTimeStamp';e={[DateTime]::FromFileTime($_.lastLogonTimeStamp)}}
Добрый день
подскажите как сделать выгрузку из Ад в текстовой файл таблицей сотрудников, которые меняли пароль позже 22.12.
Позже это до или после?
Если имеется в виду после, то как-то так:
$setday = Get-Date -Date "12/22/2020"
Get-ADUser -filter {(passwordlastset -ge $setday)} * -properties PasswordLastSet| select Name,PasswordLastSet| Export-csv -path c:\temp\user-password-2020.csv -Append -Encoding UTF8
PS. В статье есть вся инфа, я думаю можно и самому по этой статье и комментариях запилить powershell скрипт. Готовый результат не так ценен 🙂
Добрый день.
Вижу много реальных ответов. Респект и уважуха за это !!!
Добрый день!
Подскажите как выгрузить список учетных записей у которых имеется срок действия, например Иванов Иван и у этой учетки срок до 25.06.2021.
Вам нужно свойство accountExpires
Get-ADuser -properties accountExpires -filter *| FT Name, @{N='accountExpires'; E={[DateTime]::FromFileTime($_.accountExpires)}} -AutoSize
Подскажите как выгрузить список пользователей с ФИО, когда имеется список учетных записей пользователей в файле txt.
Здравствуйте. Помогите с решением задачи, пожалуйста. Есть некий список пользователей, по фамилиям которых я хотел бы провести поиск в AD. Не могу понять как правильно передать список команде get-aduser. Пишу нечто типа:
Import-Csv «C:\Users\itusr.txt» | ForEach-Object {Get-ADUser -Filter «Name -like ‘*$_.*'» -Properties EmailAddress}
На выходе хочу видеть список фамилий из листа itusr.txt и их EmailAddress.
Фамилия — вещь неуникальная, на мой взгляд будет некорректно искать по этому полю…
Добрый вечер, многие наверно задавались вопросом об уволенных сотрудниках…..
Задача: Админ домена выключает учетку пользователя и перемещает его в OU «Уволившиеся»
Скрипт должен переместить папку пользователя в папку «#Уволенные»
Q:\Обменник\#AllUsers\putin_vv => Q:\Обменник\#AllUsers\#Уволенные
спрашиваю AD:
Get-ADUser -SearchBase ‘OU="Уволившиеся",DC=K,DC=corp’-filter *| select-object SamAccountName
ответ, да в OU уволенные есть:
SamAccountName
—————
test
putin_vv
Как это реализовать? powershell или скриптами не актуально, придумать не могу.
Чтобы опросить все DC в домене и найти максимальное значение времени входа пользователя (lastlogon), юзайте такой однострочник (выполняется довольно долго):
[datetime]::FromFileTime((Get-ADDomainController -Filter * | foreach {Get-ADUser 'пользователь' -Properties LastLogon -Server $_.Name | select LastLogon} | Measure-Object -Property LastLogon -Maximum).Maximum)
Счастья и здоровья тебе человек,
2 часа искал инфу, среди тысячи строк, твой комент оказался самым ценным.
Доброго времени!
Есть список пользователей которых я уже отсортировал в екель
Эти пользователи из разных OU
Их надо залить все в одну OU
пробовал разные варианты варианты исполнения но всегда ловил ошибки
Т.е. задача взять из CSV список пользователей (пользователи в формате sAMAccountName) и переместить пользователей в определенную OU?
Доброго времени!
Можете подсказать скрипт для поиска доменных профилей на компьютерах
Прибывал через этот скрип, но выдает все профили на 1 комп может фильтр какой есть?
$computers = Get-Content -Path C:\data\computers.txt
Get-WmiObject -ComputerName $computers -Class Win32_UserAccount
Select PSComputername, Name | Export-csv C:\data\users.csv -NoTypeInformation -Encoding UTF8
Добрый день, подскажите как сделать экспорт данных пользователей в виде отдельных файлов на каждого пользователя какой параметр задействовать?
разобрался,
Import-Csv c:\install\ps\sap_user.csv | ForEach {
Get-ADUser -identity $_.user -Properties Name, company |
Select Name, company |
Export-CSV c:\install\ps\"$_.user"_ad_info.csv -Append -Encoding UTF8
}
Пожалуйста очень нужно сделать как у Сергея в посте выше,
т.е. выгрузить данные в формате html в отдельных файлов на каждого пользователя: где будет Имя, фамилию; Название подразделения; Должность; и самое сложное — Фотографию, сюда же
Столкнулся с тем что выгружались все пользователи, вместо только активных.
Всё просто, надо было делать run as administrator.
Добрый день.
Подскажите пж, как из csv импортировать в AD атрибут «displayName»?
И что должно находиться в csv-файле для этого
Заранее ,спасибо
В csv файле два столбца:SAMAccountName и DisplayName (указаны в первой строке)
В остальных строках — значения.
Чтобы изменить DisplayName пользователям по списку:
Import-Csv C:\Users.csv | ForEach-Object {Get-ADUser $_.SAMAccountName |set-aduser -DisplayName $_.DisplayName}
Всем добрый день! Нужно из AD сделать выгрузку пользователей с указанием имени, почты, номера телефона. Не получается. Подскажите, пожалуйста. Спасибо.
Что именно не получается? В статье все подробно описано, как найти нужные атрибуты, и указать их в Get-ADUser.
Добрый день.
Подскажите как выгрузить список всех заблокированных пользователей за 90дней.Заранее, спасибо.
В AD не хранится время блокировки пользователя. вы можете использовать поля типа lastlogondate или lastpassword change для поиска неактивных пользователей. Ну и проверяйте, что пользователь отключен:
get-aduser -filter {enabled -eq "false"} -properties LastlogonDate | ? {$_.lastlogondate -le (get-date).adddays(-90)}
$SamAccountName = Read-Host -Prompt 'Login пользователя'
PS Get-ADUser $SamAccountName -Properties MemberOf
Подскажите как вычленить только CN желательно в удобочитаемом варианте
Добрый день! Подскажите, какие команды потребуются для того, чтобы узнать случаи логирования пользователей в заданное время?
Вам нужен скрипт получения истории входов пользователей?
Можно получить с контролеров домена (https://winitpro.ru/index.php/2020/04/23/user-domain-login-history-powershell/) либо с конкретных компьютеров (https://winitpro.ru/index.php/2022/05/31/audit-sobytiya-vxoda-polzovatelej-v-windows/)
Добрый день! Можете помочь, нужно выгрузить в .csv список всех груп и пользователей в них. Отдельно список груп я получил:
Get-ADGroup -filter * | sort name | select name | Export-Csv -Encoding UTF8 C:\
Список пользователей в конкретной группе тоже:
Get-ADGroupMember -identity «ИМЯ ГРУППЫ» | select name | Export-Csv -Encoding UTF8 C:\
Но у меня больше 300 групп! Как сделать экспорт сразу по всем? Спасибо
$groups=(Get-ADGroup -filter *).name
foreach ($group in $groups) {
Get-ADGroupMember -identity $group | select name | Export-Csv -Encoding UTF8 C:\report\$group.csv
}
Добрый день.
Подскажите, пожалуйста, как вывести всех пользователей и подразделение (последняя в дереве OU) к которому он принадлежит?
Спасибо.
Имя OU в готовом виде не хранится в свойствах пользователя в AD. Вам придется взять значение из поля DistinguishedName или CanonicalName и обрезать значение
get-aduser -filter * -Properties cn,canonicalname | select name,userprincipalname,@{Name="OU";expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}| Out-GridView
Добрый день!
Подскажите, возможно ли проверить существует «текущий» пользователь в определённой группе?
$user = "Userrname"
или
$user= $env:UserName
$group = "Domain Admins"
$members = Get-ADGroupMember -Identity $group -Recursive | Select -ExpandProperty Name
If ($members -contains $user) {
Write-Host "$user есть в группе"
} Else {
Write-Host "$user не в группе"
}
Добрый день! Всегда пользователь «не в группе» почему-то
Всё, разобрался! Так работает, вместо Name сделал sAMAccountName Спасибо
$user= $env:UserName
$group = «Domain Admins»
$members = Get-ADGroupMember -Identity $group -Recursive | Select -ExpandProperty sAMAccountName
If ($members -contains $user) {
Write-Host «$user есть в группе»
} Else {
Write-Host «$user не в группе»
}
Доброго времени суток!
Server 2022
Хочу узнать скольким пользователям запрещено менять пароли использую этот параметр и еще несколько его вариаций, итог ничего не происходит
get-ADUser -Filter * -Properties * |select name,CannotChangePassword | where {$_.CannotChangePassword -eq «true»}
По идее так должно так работать:
Get-ADUser -Filter * -Properties * | where {$_.CannotChangePassword }
Подскажите, пожалуйста,
как вытаскивать пользователей с пустыми полями, например пустым «Department»?
Get-AdUser -Filter "Enabled -eq 'True'" -Properties * |where Department -eq $null|select name,enabled,Department
Здравствуйте, как сделать запрос, чтобы вывелся список сотрудников, кто на каком компе залогинен сегодня?
В атрибутах AD эта инфа не хранится. Как вариант реализации — нужно создать логон скрипт, который при входе пользователя прописывает его имя в свойства компьютера в AD (не сложно). Пример реализации описан по шагам здесь:
https://winitpro.ru/index.php/2019/08/13/set-adcomputer-powershell/
Либо можете получить историю входов по журналам события на контроллере домена (сложнее):
https://winitpro.ru/index.php/2020/04/23/user-domain-login-history-powershell/
Доброе утро! Выгружаю список Get-ADUser -filter * -properties * | select SID, name
Нужно получить SID с обрезкой до последнего ‘-‘, либо до последних 4 значения. Помогите, пожалуйста
Выгружай в файл:
Get-ADUser -filter * -properties * | select SID, name|| export-csv -path c:\AD\users.csv -notypeinformation
или так можно попробовать:
Get-ADUser -filter * -properties * | Select-Object -ExpandProperty SID
доброго времени суток , у меня задача , помогите справится , буду очень признателен .
— 1. Извлечение номера телефона из учетной записи пользователя в AD
(нахождение параметра, написание скрипта извлечения значения (Get-ADUser))
заранее спасибо ).
Здравствуйте!
Задача немного нетривиальная. Есть несколько доменов с доверительными отношениями. Если я логинюсь как domen1\adm_d1 в контроллере домена2, то все мои скрипты «по умолчанию» отрабатывают в АД1, а не АД2. Как запустить скрипт в нужном АД, какой дополнительный ключ прописать? Скажем, я хочу скопировать группы user1 в user2, но они в одном АД, а мой УЗ админа — в другом, и в нужном АД логины не ищутся, а ищутся по дефолту в «моём» АД, откуда у меня админ-учётка, а не в том, где мне надо внести изменения в УЗ
У почти всех компандлетов модуля AD PowerShell можно указать имя сервера с которого нужно получить данные.
Например:
Get-ADUser -filter * -Server DC01.winitpro.loc
и
Get-ADUser -filter * -Server DC01.msk.winitpro.loc
Спасибо! Написал добавление поля пользователям из списка csv
Import-Csv C:\Users\admin\Desktop\users.csv -Encoding UTF8 | ForEach-Object {
$name = $_.ФИО
$user = Get-ADUser -Filter {displayName -like $name}
set-aduser $user –company “ААА Апчхи”
}
До выведения отдельно переменной name, не работало почему-то.
И ещё посыпались ошибки, но просто не все в csv были с учётками в AD
Добрый день!
Прошу оказать помощь в создании запроса- УЗ пользователей активные, которые не использовались на протяжении двух месяцев. (с учетом контейнеров user и admin).
Спасибо!
$currentDate = Get-Date
$inactivePeriod = $currentDate.AddMonths(-2)
$inactiveUsers= Get-ADUser -Filter {LastLogonDate -lt $inactivePeriod} -SearchBase "OU=Users,DC=yourdomain,DC=com" -Properties LastLogonDate
$inactiveAdmis = Get-ADUser -Filter {LastLogonDate -lt $inactivePeriod} -SearchBase "OU=Admns,DC=yourdomain,DC=com" -Properties LastLogonDate
$allInactiveUsers = $inactiveUsersUsers+ $inactiveAdmis
$allInactiveUsers | | Select Name, SamAccountName, LastLogonDate
подскажите пожалуйста как мне найти пользователя по описанию для изменения например телефона, есть csv таблица без указания учетки, в ней есть колонка description, таким образом $csv_data| % {Set-ADUser -Identity $_.Description -OfficePhone $_.OfficePhone} , из таблицы берется нужное описание для поиска, но ищет по этому описанию он как будто имя, а не сам пункт description у пользователя в AD
Прошу помочь с составлением запроса:
Вывод активных УЗ, которыми никогда не пользовались.
Спасибо!
Get-ADUser -Filter {(lastlogontimestamp -notlike "*")} | Select Name,DistinguishedName
Прошу помочь , есть файл с списком пользователей (ФИО,GUID) нужно вывести их «Имя входа пользователи»(sAMAccountName)
Ребят прошу помощи
есть CSV файл с ФИО пользователей
нужно вывести список кто из этого списка заблокирован а кто еще работает
спасибки!
Господа, доброго времени суток.
Есть такая потребность — подчистить группу рассылки от откл учз.
1. Я смог найти инфу про атрибут useraccountcontrol=514, где 514 как раз таки disableaccount. Я смог вывести себе список Get-ADUser -Properties * -ldapFilter «(useraccountcontrol=514)» . Этот список я экспортировал по итогу в cvs.
2. Я нашёл как «удалять» участников группы Remove-ADGroupMember -Identity Test_del_svc -Members *указываем имя кого удалить*.
3. В статье есть момент, что можно из списка CSV удалять из групп: Import-CSV .\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity ‘Test_del_svc’ -members $_.users}, но это мне не помогло, получаю что то такое и потом падает в ошибку
cmdlet Remove-ADGroupMember at command pipeline position 1
Supply values for the following parameters:
Members[0]: y
В общем и целом вопрос: А как «объединить 1 и 2 пункты воедино? Ну типа как это строится в моей голове:
Remove-ADGroupMember -Identity Test_del_svc -Members | Get-ADUser -Properties * -ldapFilter «(useraccountcontrol=514)» — но как вы понимаете безрезультатно))
Буду признателен, если подскажете в принципе «логику» как это выглядит и через какую функцию это всё делается, а я постараюсь сам найти выход.
Получаете список пользователей, перебираете его и в цикле удаляете пользователей из группы:
$disabledUsers = Get-ADUser -Properties * -ldapFilter "(useraccountcontrol=514)" | select samaccountname
foreach ($user in $disabledUsers)
{
Remove-ADGroupMember -Identity Test_del_svc -Members $user
}
Добрый день! Подскажите как написать скрипт, чтобы организовать мониторинг устройств в доменной сети, а потом только мониторить новые устройства? Спасибо
Добрый день,
Пишу скрипт, чтобы учетки автоматически создавались в exchange, после создание их в ad и чтобы создавались по базам компании и региону.
Описание каждого пользователя выглядит так: ID: 99999 — Алматы — Названиекомпании
Написал скрипт, который создает почтовый ящик, а пихает в разные базы. Хочу сделать, чтобы смотрел на описание и по компании и региону он выбирал базу, но есть но.
powershell при запросе на user.description не видит описание пользователя. Мне нужно просто понять, как сделать, чтобы я смог выгружать описание. Остальное я сделаю сам
Description — это дополнительный атрибут, нужно добавить -properties * :
Get-ADUser -filter {name -like «*admin*»} -properties * | Select Name, Description
Здравствуйте.
Выполняю команду:
Get-ADGroupMember -Recursive ‘пользователи домена’ | ForEach {Get-ADUser -filter {samaccountname -eq $_.SamAccountName} -Properties displayName, company, title, department, facsimileTelephoneNumber} | Sort-Object company,displayName | Format-Table displayName,company,department,title, facsimileTelephoneNumber -GroupBy company -AutoSize | Export-Csv -NoTypeInformation C:\777.csv -Encoding UTF8
Вывод в файле csv получаю следующий:
«»ClassId2e4f51ef21dd47e99d3c952918aff9cd»,»pageHeaderEntry»,»pageFooterEntry»,»autosizeInfo»,»shapeInfo»,»groupingEntry»
«033ecb2bc07a4d43b5ef94ed5a35d280″,,,»Microsoft.PowerShell.Commands.Internal.Format.AutosizeInfo»,»Microsoft.PowerShell.Commands.Internal.Format.TableHeaderInfo»,
«9e210fe47d09416682b841769c78b8a3″,,,,,»Microsoft.PowerShell.Commands.Internal.Format.GroupingEntry»
«27c87ef9bbda4f709f6b4002fa4af63c»,,,,,
«27c87ef9bbda4f709f6b4002fa4af63c»,,,,,
Пытаюсь разобраться, почему не экспортируется в читабельный вид «файл.csv»
Что я делаю не так !?
Объекты, конвертированные в таблицу через Format-Table нельзя экспортировать через Export-Csv.
Замените Format-Table на select-object и уберите -GroupBy company -AutoSize
Добрый день.
В PS полный ноль. Целый день убил, но сильно не продвинулся. 🙂
Подскажите, пожалуйста! Задача выгрузить в файл список пользователей AD со столбцами ФИО/подразделение/группы рассылок/группы доступа
Максимум, что смог — вот это:
get-aduser -filter * -Properties cn,canonicalname | select name,userprincipalname,@{Name=»OU»;expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}| Export-csv -path C:\1\111ADUsers.csv -Encoding «windows-1251»
Отвечу сам себе.
Удалось таки получить желаемое с помощью вот такого:
=========
get-aduser -filter * -Properties cn,canonicalname, Memberof | select name,userprincipalname,@{Name=»OU»;expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}, memberOf| Export-csv -path C:\1\111ADUsers.csv -Encoding «windows-1251»
=========
Но есть проблема. Если выводить на экран или в | Out-GridView — всё ОК. Но в .csv в последнем поле, где должны быть группы пользователя, вместо групп у всех строка: «Microsoft.ActiveDirectory.Management.ADPropertyValueCollection». Подозреваю, что связано с тем, что там несколько групп через запятую и .csv не может это переварить… Но как исправить?
Заменить в select MemberOf на @{ Name = «MemberOf»; Expression = { $_.MemberOf -join «,» }}
get-aduser -filter * -Properties cn,canonicalname, Memberof | select name,userprincipalname,@{Name="OU";expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}, @{ Name = "MemberOf"; Expression = { $_.MemberOf -join "," }}| Export-csv -path C:\1\111ADUsers.csv -Encoding "windows-1251"
Спасибо, добрый человек! Всё заработало! Только кавычки в твоём коде поправил и завелось. 😉
Подскажите, пожалуйста про кавычки, что нужно исправить? У меня команда не идёт, ошибку пишет.
В Name=»OU» кавычки заменить надо.
"OU"
вот на такиеЮзеров с полями думаю вы собрали
что-то вроде
Get-ADUser -filter * -Searchbase "OU=ОУ ОУ ,DC=домен,DC=домен" -Properties * | select name, department, office
все поля видны в АД
список групп примерно так можно (в $user — передан пользователь)
Get-ADUser $user -Properties MemberOf | Select-Object -ExpandProperty MemberOf
или так +-
комбинируйте, заворачивайте в Foreach
$user = Get-ADUser -Identity "имя" -Properties Name, Department, MemberOf
$user.MemberOf | Get-ADGroup | Select-Object Name, Department | Export-Csv -Path C:\11111\output.txt -NoTypeInformation
Благодарю, конечно, но… То, что я привёл в изначальном посте возвращает список пользователей с емейлом и расположением пользователя в OU. Ваши варианты не выдают НИЧЕГО, кроме ошибок.
Повторюсь: я полный НОЛЬ. А Вы мне советуете «комбинировать и заворачивать в Foreach». Это, конечно, ценная информация для людей, которые в теме. Для меня же она, к сожалению, полностью бесполезна. Благодарю за попытку.
Добрый день.
Поступила задача выгрузить из AD данные в составе EmployeeID, Title, Name, EmailAddress. Данные выгрузил. Прошло время, теперь просят выгрузить данные по которым EmailAddress был изменен после 12.07 (внесена новая запись или изменен адрес), т.е нужны измененные с 12.07 данные EmailAddress.
Какую конструкцию необходимо для этого использовать? Явного указания даты изменения EmailAddress в атрибутах учетной записи пользователя AD.
Если бы у вас условно была выгрузка на 11.07 и после этой даты, то эти два списка можно было бы сравнить в Excel. А так, вы не сможете отследить когда конкренто был изменен атрибут.
Как узнать IPv4 всех юзеров в AD ?
Можно конечно вывести список всех компов в AD, потом к каждому подключаться и смотреть интересующую инфу.Хотелось бы другой способ)
Можно реализовать через логон скрипт, который прописывает в описание пользователя в AD имя и IP компьютера. По аналогии со статьей _https://winitpro.ru/index.php/2015/07/28/zapolnyaem-opisanie-kompyuterov-v-active-directory/