web-dev-qa-db-fra.com

Comment exporter-CSV d'objets Active Directory?

J'essaie de récupérer tous les enregistrements d'utilisateurs et leurs groupes associés dans le cadre d'un effort de revalidation d'ID utilisateur. Mon agent de sécurité le veut au format CSV.

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 n'inclut pas les groupes dont 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

Cela 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

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

5
Sean

Depuis un système d'exploitation Windows Server, exécutez la commande suivante pour effectuer une sauvegarde de la totalité de Active Director:

csvde -f test.csv

Cette commande est très large et vous donnera plus que les informations nécessaires. Pour contraindre les enregistrements aux enregistrements utilisateur uniquement, vous souhaitez plutôt:

csvde -f test.csv -r objectClass=user 

Vous pouvez restreindre davantage la commande pour ne vous donner que les champs nécessaires à la recherche demandée, tels que:

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 réelle a une boîte aux lettres (par opposition aux comptes génériques pour les stations de travail kiosk/lab), vous pouvez utiliser mailNickname à la place de sAMAccountName.

7
Octavian

Pour la postérité ... j'ai compris 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
7
Sean
csvde -f test.csv

Cette commande effectue un vidage CSV de chaque entrée de votre serveur Active Directory. Vous devriez pouvoir voir le DN complet des utilisateurs et des groupes.

Vous devrez parcourir ce fichier de sortie et vous débarrasser du contenu inutile.

5
Jose Vega

Salut tu peux essayer ça ...

Essayer..

$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

J'espère que ça marche pour toi.

0
user1872541

la première commande est correcte mais change de convert en export en 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
0
user2791583