2010-12-07 17 views
5

Estoy tratando de obtener un volcado de todos los registros de usuario y sus grupos asociados para un esfuerzo de revalidación de ID de usuario. Mi agente de seguridad lo quiere en formato CSV.Cómo exportar-CSV de objetos de Active Directory?

Esto funciona muy bien:

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

Sin embargo, que no incluye los grupos que el usuario es miembro de.

Los intentos de algo como esto han fracasado:

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 

Esto también fracasó:

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 

probablemente estoy perdiendo algo simple. Cualquier ayuda sería muy apreciada. Gracias!

+0

qué sistema operativo está utilizando? ¿Servidor de windows? –

Respuesta

5
csvde -f test.csv 

Este comando realizará un volcado CSV de cada entrada en su servidor de Active Directory. Debería poder ver los DN completos de usuarios y grupos.

Tendrá que ir a través de ese archivo de salida y deshacerse del contenido innecesario.

+0

Nuestra operación intenta estandarizar Powershell siempre que sea posible. Puedo obtener la información que necesito, solo estoy teniendo problemas para que los campos de usuario y la membresía del grupo del usuario aparezcan en la misma línea en el archivo CSV ... así que 1 usuario tiene 1 registro. – Sean

7

Para la posteridad .... Me di cuenta de cómo obtener lo que necesitaba. Aquí está en caso de que pueda ser útil para otra persona.

$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

¿hay alguna posibilidad de que pueda comentar lo que hace cada línea o hacer referencia a un sitio que muestra la información? Gracias por la respuesta. – Damainman

7

De un sistema operativo Windows Server ejecute el siguiente comando para un volcado de toda la Directora activo:

csvde -f test.csv 

Este comando es muy amplio y le dará más información necesaria. Para limitar los registros a sólo los registros de usuarios, debe en su lugar que desee:

csvde -f test.csv -r objectClass=user 

Puede restringir aún más el comando para darle sólo los campos que necesite relevante para la búsqueda solicitada, tales como:

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

Si tiene un servidor de Exchange y cada usuario asociado a una persona en vivo tiene un buzón (a diferencia de las cuentas genéricas para kioscos/estaciones de trabajo de laboratorio) puede usar mailNickname en lugar de sAMAccountName.

0

HI puede probar esta ...

Trate ..

$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 

O

$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 

espero que funcione para usted.

0

el primer comando es correcta, pero el cambio de convertir a exportar a csv, como abajo,

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 
Cuestiones relacionadas