如何导出 - Active Directory对象的CSV?

Sea*_*ean 5 powershell active-directory

我正在尝试转储所有用户记录及其关联组以进行用户ID重新验证工作.我的安全人员想要它以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
Run Code Online (Sandbox Code Playgroud)

但是,这不包括用户所属的组.

尝试这样的事情失败了:

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
Run Code Online (Sandbox Code Playgroud)

这也失败了:

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
Run Code Online (Sandbox Code Playgroud)

我可能错过了一些简单的东西.任何帮助将不胜感激.谢谢!

小智 8

从Windows Server OS执行以下命令以转储整个Active Director:

csvde -f test.csv
Run Code Online (Sandbox Code Playgroud)

此命令非常广泛,将为您提供超过必要的信息.要将记录限制为仅用户记录,您需要:

csvde -f test.csv -r objectClass=user 
Run Code Online (Sandbox Code Playgroud)

您可以进一步限制命令,仅为您提供所需的搜索字段,例如:

csvde -f test.csv -r objectClass=user -l DN, sAMAccountName, department, memberOf
Run Code Online (Sandbox Code Playgroud)

如果您有Exchange服务器并且与活动人员关联的每个用户都有一个邮箱(而不是kiosk/lab工作站的通用帐户),则可以使用mailNickname代替sAMAccountName.


Sea*_*ean 7

对于后代......我想出了如何得到我需要的东西.这是为了防止对其他人有用.

$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
Run Code Online (Sandbox Code Playgroud)


Jos*_*ega 5

csvde -f test.csv
Run Code Online (Sandbox Code Playgroud)

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

您将不得不浏览该输出文件并删除不必要的内容.