我正在尝试转储所有用户记录及其关联组以进行用户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
但是,这不包括用户所属的组。
尝试这样的事情失败了:
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 :(得分: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
答案 1 :(得分:7)
从Windows Server OS执行以下命令以转储整个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服务器并且与活人有关联的每个用户都有一个邮箱(而不是kiosk / lab工作站的通用帐户),您可以使用mailNickname代替sAMAccountName。
答案 2 :(得分:5)
csvde -f test.csv
此命令将对Active Directory服务器中的每个条目执行CSV转储。您应该能够看到用户和组的完整DN。
您必须浏览该输出文件并删除不必要的内容。
答案 3 :(得分:0)
你可以试试这个......
尝试..
$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
希望它适合你。
答案 4 :(得分:0)
第一个命令是正确的,但从转换为导出更改为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