![]() |
Выгрузка пользователей через DSQUERY
Есть задача: выгрузить всех пользователей, кто не менял пароль больше 45 дней и тех, кто не заблокирован.
У меня получилось следующее: dsquery user -stalepwd 45 -limit 0 Только мне нужно чтобы он вывел мне определенные поля: ФИО, подразделение, номер телефона, дата когда он последний раз менял пароль. И я никак не пойму что нужно добавить в запрос. Кто может помочь с этим? UPD-1: Понял в чем затупил. Теперь команда выглядит вот так dsquery user -stalepwd 45 -limit 0 | dsget user -samid -display -dept -company -pwdneverexpires -disabled -acctexpires >D:\test.csv И ошибку выдает вот такую: dsget ошибка:Недопустимый формат значения "Целевой объект этой команды". введите dsget /? для получения справки. |
Воспользуйтесь powershell, ощутимо проще будет:
Код:
$date=(Get-Date).AddDays(-45) |
nokogerra,
При работе с AD использую RSAT, локально работать на сервере возможности нет. А вот ошибка при попытке запуска скрипта: Цитата:
|
нет нужды работать локально.
Хм, я -searchbase для примера привел. Если вы собираетесь искать пользователей во всем домене, то -searchbase можно не указывать. Если хотите указать дефолтный OU "USers", то он вовсе не OU, а CN, т.е. выглядеть будет так: Get-ADUser -SearchBase "CN=Users,DC=domain,DC=local" -f {(enabled -eq $true) -and (pwdlastset -lt $date)} -properties *| select givenname, surname, initials, department, mobile, passwordlastset |
Я уже понял, что натупил.
Сделал просто: Код:
$date=(Get-Date).AddDays(-45) Код:
givenname: Иван Иванович |
В таблицу для каких целей? Для удобочитаемости можете сделать так:
get-aduser ....... | ft givenname, surname... -auto Если нужно именно exel, то можно использовать export-csv, например: get-aduser ..... | select givenname.... | export-csv c:\1.csv и потом конвертировать в xls. Стоит прочитать справку командлета export-csv (get-help export-csv -full), возможно придется использовать определенную кодировку. |
Спасибо большое, почитаю.
Но тут еще один косяк вылез. Некоторые поля (ФИО) просто пустые оказались. У меня таких учеток нет. Где-то что-то пошло не так. Буду разбираться. А поля givenname, surname, initials и другие где взять? Если я захочу поменять выводимые данные? Они не совпадают с полями dsquery. Или я что-то путаю? |
Вложений: 1
givenname, surname и initials вполне могут быть пустыми. Посмотрите скриншот, причем стоит учесть что name и displayname могут отличаться. Сам логин, а точнее то, что вы видите на вкладке "Учетная запись" в поле "Имя входа пользователя" - это samaccountname.
Вообще посмотреть все свойства объекта пользователя можно так: Код:
get-aduser userx -properties * Код:
get-aduser userx -properties * | get-member -membertype property |
Все получилось. Большое спасибо!
Теперь мой скрипт выглядит вот так: Код:
$date=(Get-Date).AddDays(-45) Сейчас осталось решить 3 проблемы: 1. Поле pwdLastSet вот в таком виде отображается "130747725964343885". Не получается пока его привести в нормальный вид. 2. Пока не нашел свойства "Срок действия пароля не ограничен", как его в вывод сделать. 3. Не нашел свойства, заблокирована ли учетка пользователя или нет в данный момент. |
Код:
get-aduser userx -properties *| select passwordlastset, passwordneverexpires, enabled |
Ну passwordlastset заменяет pwdLastSet, но за статью спасибо.
Есть еще поле "срок действия учетной записи", оказывается срок действия у нее вышел, она не показывается как заблокированная, но уже не работает. О таком маленьком нюансе я как-то и забыл. Хех, добавил в вывод "accountexpires" и он мне выдает или "0" или "9,22337E+18")))) Буду курить как сразу вывести нормальные значения(( |
Ну и что что заменяет, вы же получили читаемый вывод даты, верно? Для этого я линканул статью.
Код:
PS C:\Windows\system32> Get-ADUser testx -Properties *| select accountexpirationdate |
Так и я о том же Большое спасибо за помощь. Сейчас я получаю то, что нужно.
Для тех кому может понадобиться данный скрипт: Код:
$date=(Get-Date).AddDays(-45) |
Время: 07:45. |
Время: 07:45.
© OSzone.net 2001-