2010-12-07 10 views
5

Ich versuche, einen Dump aller Benutzerdatensätze und ihrer zugeordneten Gruppen für eine Benutzer-ID-Revalidierung Mühe zu bekommen. Mein Sicherheitsbeauftragter möchte es im CSV-Format haben.So exportieren Sie CSV von Active Directory-Objekten?

Dies funktioniert gut:

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

jedoch, dass nicht die Gruppen enthält der Benutzer ein Mitglied ist.

Versuche, so etwas wie dies versäumt haben:

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 

Ich bin wahrscheinlich etwas fehlt einfach

:

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 

Dies schlug ebenfalls fehl. Jede Hilfe würde sehr geschätzt werden. Danke!

+0

welches Betriebssystem verwenden Sie? Windows Server? –

Antwort

5
csvde -f test.csv 

Dieser Befehl führt eine CSV-Sicherung jedes Eintrags in Ihrem Active Directory-Server durch. Sie sollten in der Lage sein, die vollständigen DNs von Benutzern und Gruppen zu sehen.

Sie müssen durch diese Ausgabedatei gehen und den unnötigen Inhalt loswerden.

+0

Unser Betrieb versucht nach Möglichkeit, Powershell zu standardisieren. Ich kann die Informationen, die ich brauche, ziehen, ich habe nur Probleme, die Benutzerfelder und die Gruppenzugehörigkeit des Benutzers in der gleichen Zeile in der CSV-Datei erscheinen zu lassen ..... also 1 Benutzer ist 1 Datensatz. – Sean

7

Für die Nachwelt .... Ich habe herausgefunden, wie man bekommt, was ich brauche. Hier ist es für den Fall, dass es für jemand anderen nützlich sein könnte.

$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

Gibt es eine Chance, dass Sie kommentieren können, was jede Zeile tut oder auf eine Site verweist, die die Informationen anzeigt? Danke für Ihre Antwort. – Damainman

7

von einem Windows-Server-Betriebssystem des folgenden Befehl für einen Dump des gesamten Active Directory ausführen:

csvde -f test.csv 

Dieser Befehl ist sehr breit und werden Sie mehr als notwendige Informationen. Um die Datensätze nur Benutzerdatensätze zu beschränken, würden Sie stattdessen wollen:

csvde -f test.csv -r objectClass=user 

Sie können weiterhin den Befehl beschränken geben Sie nur die Felder, die Sie in die Suche relevant müssen angefragt, wie:

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

Wenn Sie über einen Exchange-Server verfügen und jeder einer Live-Person zugeordnete Benutzer über ein Postfach verfügt (im Gegensatz zu allgemeinen Konten für Kiosk-/Laborarbeitsstationen), können Sie anstelle von SAMAccountName mailNickname verwenden.

0

HALLO Sie dies versuchen können ...

Versuchen ..

$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 

Oder

$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 

Hoffe, dass es für Sie arbeitet.

0

der erste Befehl ist richtig, aber Wechsel von Konvertit csv zu exportieren, wie unten,

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