Как экспортировать CSV объектов Active Directory? - PullRequest
5 голосов
/ 08 декабря 2010

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

Это прекрасно работает:

Get-ADUser -Filter * -Properties * | Select-Object -Property Name,SamAccountName,Description,EmailAddress,LastLogonDate,Manager,Title,Department,whenCreated,Enabled,Organization | Sort-Object -Property Name | ConvertTo-CSV

Однако это не включает группы, в которые входит пользователь.

Попытки чего-то подобного потерпели неудачу:

Get-ADUser -Filter * -Properties * | Select-Object -Property Name,SamAccountName,Description,EmailAddress,LastLogonDate,Manager,Title,Department,whenCreated,Enabled,Organization, @{$_.MemberOf |Get-Group|ForEach-Object {$_.Name}} | Sort-Object -Property Name | ConvertTo-CSV

Это также не удалось:

Get-ADUser -Filter * -Properties * | Sort-Object -Property Name | ForEach-Object {
    $_ | Format-List -Property Name,SamAccountName,Description,EmailAddress,LastLogonDate,Manager,Title,Department,whenCreated,Enabled
    $_.MemberOf | Get-ADGroup | ForEach-Object {$_.Name} | Sort-Object
}  | ConvertTo-CSV

Я, наверное, упускаю что-то простое. Любая помощь будет принята с благодарностью. Спасибо!

Ответы [ 5 ]

7 голосов
/ 09 декабря 2010

Для потомков .... Я разобрался, как получить то, что мне нужно. Вот в случае, если это может быть полезно для кого-то еще.

$alist = "Name`tAccountName`tDescription`tEmailAddress`tLastLogonDate`tManager`tTitle`tDepartment`tCompany`twhenCreated`tAcctEnabled`tGroups`n"
$userlist = Get-ADUser -Filter * -Properties * | Select-Object -Property Name,SamAccountName,Description,EmailAddress,LastLogonDate,Manager,Title,Department,Company,whenCreated,Enabled,MemberOf | Sort-Object -Property Name
$userlist | ForEach-Object {
    $grps = $_.MemberOf | Get-ADGroup | ForEach-Object {$_.Name} | Sort-Object
    $arec = $_.Name,$_.SamAccountName,$_.Description,$_.EmailAddress,$_LastLogonDate,$_.Manager,$_.Title,$_.Department,$_.Company,$_.whenCreated,$_.Enabled
    $aline = ($arec -join "`t") + "`t" + ($grps -join "`t") + "`n"
    $alist += $aline
}
$alist | Out-File D:\Temp\ADUsers.csv
7 голосов
/ 21 июня 2012

В ОС Windows Server выполните следующую команду для дампа всего Active Director:

csvde -f test.csv

Эта команда очень обширна и даст вам больше, чем необходимо.Чтобы ограничить записи только пользовательскими записями, вместо этого вы бы хотели:

csvde -f test.csv -r objectClass=user 

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

csvde -f test.csv -r objectClass=user -l DN, sAMAccountName, department, memberOf

Если у вас есть сервер Exchange, и у каждого пользователя, связанного с живым человеком, есть почтовый ящик (в отличие от общих учетных записей для рабочих станций киоска / лаборатории), вы можете использовать mailNickname вместо sAMAccountName.

5 голосов
/ 08 декабря 2010
csvde -f test.csv

Эта команда выполнит дамп CSV каждой записи на вашем сервере Active Directory. Вы должны увидеть полное DN пользователей и групп.

Вам придется просмотреть этот выходной файл и избавиться от ненужного содержимого.

0 голосов
/ 18 сентября 2013

первая команда верна, но измените с преобразования на экспорт в csv, как показано ниже,

Get-ADUser -Filter * -Properties * `
    | Select-Object -Property Name,SamAccountName,Description,EmailAddress,LastLogonDate,Manager,Title,Department,whenCreated,Enabled,Organization `
    | Sort-Object -Property Name `
    | Export-Csv -path  C:\Users\*\Desktop\file1.csv
0 голосов
/ 13 февраля 2013

Привет, вы можете попробовать это ...

Попробуйте ..

$Ad = Get-ADUser -SearchBase "OU=OUi,DC=company,DC=com"  -Filter * -Properties employeeNumber | ? {$_.employeenumber -eq ""}
$Ad | Sort-Object -Property sn, givenName | Select * | Export-Csv c:\scripts\ceridian\NoClockNumber_2013_02_12.csv -NoTypeInformation

Или

$Ad = Get-ADUser -SearchBase "OU=OUi,DC=company,DC=com"  -Filter * -Properties employeeNumber | ? {$_.employeenumber -eq $null}
$Ad | Sort-Object -Property sn, givenName | Select * | Export-Csv c:\scripts\cer

Надеюсь, у вас это получится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...