2010-12-07 40 views
5

J'essaye d'obtenir un vidage de tous les dossiers d'utilisateur et de leurs groupes associés pour un effort de revalidation d'identification d'utilisateur. Mon agent de sécurité le veut en format CSV.Comment exporter-CSV d'objets Active Directory?

Cela fonctionne très 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 

Cependant, cela ne comprend pas les groupes auxquels l'utilisateur est membre.

Les tentatives de quelque chose comme ceci ont échoué:

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 

a également échoué:

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 

Je manque probablement quelque chose de simple. Toute aide serait grandement appréciée. Merci!

+0

quel système d'exploitation utilisez-vous? Windows Server? –

Répondre

5
csvde -f test.csv 

Cette commande effectuera un vidage CSV de chaque entrée de votre serveur Active Directory. Vous devriez être en mesure de voir le DN complet des utilisateurs et des groupes.

Vous devrez parcourir ce fichier de sortie et éliminer le contenu inutile.

+0

Notre opération essaie de standardiser Powershell autant que possible. Je peux tirer les informations dont j'ai besoin, j'ai juste du mal à faire apparaître les champs des utilisateurs et l'appartenance aux groupes de l'utilisateur sur la même ligne dans le fichier CSV ..... donc 1 utilisateur est 1 enregistrement. – Sean

7

Pour la postérité .... J'ai trouvé comment obtenir ce dont j'avais besoin. Ici c'est au cas où cela pourrait être utile à quelqu'un d'autre.

$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

une chance que vous pouvez commenter ce que chaque ligne fait ou référence un site qui montre l'information? Merci pour la réponse. – Damainman

7

A partir d'un système d'exploitation Windows Server exécutez la commande suivante pour une décharge de l'ensemble du Directeur actif:

csvde -f test.csv 

Cette commande est très large et vous donnera plus d'informations nécessaires. Pour limiter les enregistrements aux enregistrements que l'utilisateur, vous plutôt vouloir:

csvde -f test.csv -r objectClass=user 

Vous pouvez restreindre davantage la commande pour vous donner uniquement les champs dont vous avez besoin pertinents pour la recherche demandée comme:

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

Si vous avez un serveur Exchange et que chaque utilisateur associé à une personne en direct dispose d'une boîte aux lettres (par opposition aux comptes génériques pour postes de travail kiosque/laboratoire), vous pouvez utiliser mailNickname à la place de sAMAccountName.

0

HI vous pouvez essayer ...

Essayez ..

$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 

Ou

$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 

espérons que cela fonctionne pour vous.

0

la première commande est correcte, mais le changement de converti à exporter au format CSV, comme ci-dessous,

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