如何导出Active Directory对象的CSV?

问题描述:

我正试图获取所有用户记录及其关联组的用户ID重新验证工作的转储。我的安全人员需要CSV格式。如何导出Active Directory对象的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 

我可能失去了一些东西简单。 任何帮助将不胜感激。 谢谢!

+0

什么操作系统您使用的? Windows服务器? – 2010-12-07 21:54:37

csvde -f test.csv 

该命令将执行您的Active Directory服务器中每个条目的CSV转储。您应该能够看到用户和组的完整DN。

您将不得不经过该输出文件并摆脱不必要的内容。

+0

我们的操作尝试在Powershell上尽可能标准化。我可以将我需要的信息提取出来,但我只是在获取用户字段和用户的组成员身份出现在CSV文件的同一行上时遇到麻烦.....所以1个用户是1条记录。 – Sean 2010-12-08 14:35:39

对于后人....我想出了如何得到我需要的东西。在这种情况下它可能对其他人有用。

$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 
+0

你有什么机会可以评论每行代码或参考显示信息的网站?感谢您的答复。 – Damainman 2015-06-10 10:52:41

从Windows Server操作系统的整个Active主任转储执行以下命令:

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。

HI,你可以试试这个...

尝试..

$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 

希望它为你工作。

的第一个命令是正确的,但由转换变化如下导出为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