2012-01-18 3 views
1

Je voudrais trouver un moyen (VB Script ou PowerShell de préférence) de générer un rapport qui affiche tous les comptes d'utilisateur sur le domaine, et affiche les groupes dont ils sont membres.Comment afficher tous les utilisateurs du domaine et leur appartenance au groupe (Active Directory)

Je voudrais que cela soit exporté vers un tableur Excel dans le format suivant:

USERNAME1 | Groupe1, Groupe 2, Groupe 3, Groupe 4, Groupe 5 etc.
Nom d'utilisateur2 | Groupe1, Groupe 2, Groupe 3, Groupe 4, Groupe 5 etc.

Je joue autour avec Quest Powershell commandes pour AD et est venu avec ce qui suit:

get-qaduser * -sizelimit 0 | select Name,MemberOf | export-csv report.csv 

Cependant, cette affiche dans le fichier de sortie comme:

Username1 | System.String[] 
Username2 | System.String[] 
Username3 | System.String[] 

System.String[] devrait être le nom du groupe.

Que dois-je faire?

Répondre

6

Essayez cela, vous devez joindre les noms de groupe:

$memberOf = @{n='MemberOf';e={ ($_.MemberOf -replace '^CN=([^,]+).+$','$1') -join ';' }} 

Get-QADUser -SizeLimit 0 | ` 
Select-Object Name,DN,SamAccountName,$memberOf | ` 
Export-Csv report.csv 
+0

Woaw, joli cliché! +1 – JPBlanc

+0

Merci beaucoup Shay. Fonctionne un traitement absolu, je peux alors le limiter en utilisant le point-virgule pour les mettre dans des colonnes séparées aussi bien. Existe-t-il un moyen d'inverser le script afin qu'il affiche les groupes et les membres de ces groupes, comme ceci: Groupe1 | Utilisateur1, Utilisateur2, Utilisateur 3 etc. etc.? – Matt

+0

Oui, essayez ceci: Get-QADGroup -sl 0 | sélectionnez Nom, DN, @ {n = 'Membres'; e = {($ _ | Get-QADGroupmembre | select -expand name) -join ';' }} –

0

someting comme ce script (non testé):

$users = get-qaduser * -sizelimit 0 

$a = @() 

foreach ($user in $users) 
{ $al = New-Object System.Object 

$al | Add-member -type Noteproperty -name Accountame $user.samaccountname 
$al | add-member -type Noteproperty -name Groups $user.memberof 

$a += $al 

} 

$a | export-csv report.csv 
+0

Merci Christian, mais cela renvoie "System.String []" à la place de l'endroit où les groupes devraient être affichés, aussi. Je crois que Shay a fourni un script qui fonctionne, merci beaucoup pour votre temps. – Matt

0

Pouvez-vous essayer

get-qaduser * -sizelimit 0 | select -Property @{N="my";E={$_.name}}, -ExpandProperty MemberOf | export-csv report.csv 
+0

Essayé et reçu: Select-Object: Impossible de trouver un paramètre de position qui accepte l'argument 'MemberOf'. Sur la ligne: 1 char: 36. Merci pour votre aide mais je crois que Shay a fourni un moyen de le faire :-) – Matt

Questions connexes