Войти

Показать полную графическую версию : [решено] Выгрузка данных о пользователях из AD


Elven
17-12-2015, 11:44
Прошу прощения за такую задачу, но нужно срочно (так бы сам разобрался), а с PS я не особенно дружу.
Нужно следующее:
выгрузить пользователей из Active Directory с указанием логина; ФИО; даты создания; статуса учетной записи (включен/отключен); даты последней смены пароля; даты последнего логина.
Выгрузить нужно в csv.

Сколь мне известно в PS это делается едва ли не в один командлет, впрочем если решение будет на другом языке - ни разу не обижусь.

Elven
17-12-2015, 12:39
пока получилось как-то так

PROCESS
{
$csvreportfile = "d:\ADUsers.csv"

Import-Module ActiveDirectory

Get-ADUser -server DCname -Properties * -Filter * |
Select-Object @{Label = "Logon Name";Expression = {$_.sAMAccountName}},
@{Label = "Display Name";Expression = {$_.DisplayName}},
@{Label = "Created";Expression = {$_.whenCreated}},
@{Label = "Account Status";Expression = {if (($_.Enabled -eq 'TRUE') ) {'Enabled'} Else {'Disabled'}}},
@{Label = "Last Changed";Expression = {$_.whenChanged}},
@{Label = "Last LogOn Date";Expression = {$_.lastlogondate}} |

Export-Csv -Path $csvreportfile -NoTypeInformation -Encoding utf8
}

Скажите, whenChanged можно считать датой последней смены пароля?

Kazun
17-12-2015, 12:45
whenChanged - нет нельзя, воспользоваться pwdLastSet.

[datetime]::FromFileTime($_.pwdLastSet)

Iska
17-12-2015, 12:58
Elven, лучше напрямую перечислите потребные Properties, как правило, будет быстрее.Скажите, whenChanged можно считать датой последней смены пароля? »
Разумеется, нет. Это время последнего изменения объекта AD. К дате смены пароля отношения не имеет.

Script to list all AD users' passwords date - PasswordLastChanged attribute (https://social.technet.microsoft.com/Forums/scriptcenter/en-US/be4e6b5d-4eba-457f-8eab-99a08b526a6a/script-to-list-all-ad-users-passwords-date-passwordlastchanged-attribute?forum=ITCG)

Elven
17-12-2015, 15:20
Iska, пробовал, но почему-то они выводились не в том порядке, который я задавал, а в каком-то своем.
Kazun, спасибо, самое то.
конечный вариант:
PROCESS
{
$csvreportfile = "d:\ADUsers.csv"

Import-Module ActiveDirectory

Get-ADUser -server DCname -Properties * -Filter * |
Select-Object @{Label = "Logon Name";Expression = {$_.sAMAccountName}},
@{Label = "Display Name";Expression = {$_.DisplayName}},
@{Label = "Created";Expression = {$_.whenCreated}},
@{Label = "Account Status";Expression = {if (($_.Enabled -eq 'TRUE') ) {'Enabled'} Else {'Disabled'}}},
@{Label = "Last Changed Password";Expression = {[datetime]::FromFileTime($_.pwdLastSet)}},
@{Label = "Last LogOn Date";Expression = {$_.lastlogondate}} |

Export-Csv -Path $csvreportfile -NoTypeInformation -Encoding utf8
}

Iska
17-12-2015, 16:21
Iska, пробовал, но почему-то они выводились не в том порядке, который я задавал, а в каком-то своем. »
Разумеется. См. ниже.

конечный вариант: »
Вы меня не поняли. В:
Get-ADUser -server DCname -Properties * »
укажите получать не весь огромный перечень свойств. а только потребные. А дальше — всё по Вашему коду.

P.S. Зачем нужен «-Filter *» так же не понял.




© OSzone.net 2001-2012