Question
Export d'infos issues de l'AD dans fichier Excel
- Arnaud
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 2 ans 8 mois - il y a 2 ans 8 mois #31723
par Arnaud
Export d'infos issues de l'AD dans fichier Excel a été créé par Arnaud
Bonjour a tous,
Voilà, j'ai récupéré un bout de code que j'ai modifié afin qu'il m'exporte des infos de l'AD vers un fichier Excel.
Voici le script:
Cela me donne un fichier Excel avec sur une même ligne: sAMAccountName, department, Mail, OfficePhone, Company pour les 130 premiers utilisateurs de l'AD
Tout fonctionne parfaitement !
Mais j'aimerais que ce script m'en fasse un peu plus...
J'aimerais que pour chaque utilisateur, il me rajoute au bout de chaque ligne, les groupes auxquels appartient l'utilisateur.
Chose que j'arrive a obtenir via la commande suivante:
Il doit falloir définir pour chaque ligne, "sAMAccountName" comme étant une variable avec une boucle ForEach...
Ca ne doit pas être grand chose, mais je ne m'en sort pas.
Merci d'avance pour votre aide.
Voilà, j'ai récupéré un bout de code que j'ai modifié afin qu'il m'exporte des infos de l'AD vers un fichier Excel.
Voici le script:
[b]# Installation du module "ImportExcel"
Install-Module -Name ImportExcel
# Emplacement du fichier de sortie
$xlfile = "\\MONSERVEUR\PARTAGE\PSreports.xlsx"
Remove-Item $xlfile -ErrorAction SilentlyContinue
# Extraction des infos de l'AD, dans l'OU "MONOU" (et les sous OU)
$excel = Get-ADUser -Filter * -SearchBase "OU=MONOU,DC=MONDOMAINE,DC=local" -Properties * |
Select-Object sAMAccountName, department, Mail, OfficePhone, Company | Select -First 130 |
Export-Excel $xlfile -AutoSize -StartRow 2 -TableName Utilisateurs -PassThru
# Get the sheet named Sheet1
$ws = $excel.Workbook.Worksheets['Sheet1']
# Create a hashtable with a few properties
# that you'll splat on Set-Format
$xlParams = @{WorkSheet=$ws;Bold=$true;FontSize=18;AutoSize=$true}
# Create the headings in the Excel worksheet
Set-Format -Range A1 -Value "Utilisateurs" @xlParams
# Close and Save the changes to the Excel file
Close-ExcelPackage $excel[/b]
Cela me donne un fichier Excel avec sur une même ligne: sAMAccountName, department, Mail, OfficePhone, Company pour les 130 premiers utilisateurs de l'AD
Tout fonctionne parfaitement !
Mais j'aimerais que ce script m'en fasse un peu plus...
J'aimerais que pour chaque utilisateur, il me rajoute au bout de chaque ligne, les groupes auxquels appartient l'utilisateur.
Chose que j'arrive a obtenir via la commande suivante:
[b]Get-ADPrincipalGroupMembership loginutilisateur | select name[/b]
Il doit falloir définir pour chaque ligne, "sAMAccountName" comme étant une variable avec une boucle ForEach...
Ca ne doit pas être grand chose, mais je ne m'en sort pas.
Merci d'avance pour votre aide.
Dernière édition: il y a 2 ans 8 mois par Arnaud.
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 2 ans 8 mois #31724
par Philippe
Réponse de Philippe sur le sujet Export d'infos issues de l'AD dans fichier Excel
salut Arnaud,
j'ai une solution sans boucle à te proposer qui n'utilise pas Get-ADPrincipalGroupMembership, mais l'attribut MemberOf de l'utilisateur dans l'AD
d'abord un conseil : ne jamais récupéré toutes les propriétés quand tu interroge un AD, tu le surcharge pour rien et en plus ta requête sera inutilement longue !
ne sélectionne que les attributs utile, ce qui donne ça :Company : companie de powershell
Department : technique
DistinguishedName : CN=Lee Nux,OU=utilisateurs test,DC=domtest,DC=lan
Enabled : True
GivenName : Lee
Mail : Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
MemberOf : {CN=grservtech,OU=utilisateurs test,DC=domtest,DC=lan, CN=grimptech,OU=utilisateurs
test,DC=domtest,DC=lan, CN=grserveurs,OU=utilisateurs test,DC=domtest,DC=lan,
CN=grcommun,OU=utilisateurs test,DC=domtest,DC=lan}
Name : Lee Nux
ObjectClass : user
ObjectGUID : 899597e7-0067-4d36-93e1-16ecac1616a1
OfficePhone : 01 02 33 44 55
SamAccountName : lnux
SID : S-1-5-21-1212780272-13945088-1065478795-1106
Surname : Nux
UserPrincipalName : Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
quelques explications sur la solution :
- j'ai créé une propriété personnalisée dans le select que j'ai appelé groupes, grace à @{name = 'Groupes'; expression = { }}
- Dans cette propriété, dans expression, je peut y mettre du code
- dans ce code, je travail l'attribut "MemberOf" pour qu'il soit utilisable dans un fichier excel
1 -> suppression des CN=, OU= et DN= pour ne garder que le nom du groupe. le -replace '^CN=([^,]+).+$','$1' cette dernière partie est un expression régulière.
2 -> suppression des sauts de lignes, le -join ","
pour info : $_ de $_.MemberOf contient l'objet transmis par le pipeline " | ". Ici l'objet AD d'un utilisateur
si j'ai bien fait le copier/coller, tu remplace ta ligne par celle ci et c'est tout !!
j'ai une solution sans boucle à te proposer qui n'utilise pas Get-ADPrincipalGroupMembership, mais l'attribut MemberOf de l'utilisateur dans l'AD
d'abord un conseil : ne jamais récupéré toutes les propriétés quand tu interroge un AD, tu le surcharge pour rien et en plus ta requête sera inutilement longue !
ne sélectionne que les attributs utile, ce qui donne ça :
Get-ADUser -Filter * -SearchBase "OU=MONOU,DC=MONDOMAINE,DC=local" -Properties sAMAccountName, department, Mail, OfficePhone, Company, MemberOf
Department : technique
DistinguishedName : CN=Lee Nux,OU=utilisateurs test,DC=domtest,DC=lan
Enabled : True
GivenName : Lee
Mail : Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
MemberOf : {CN=grservtech,OU=utilisateurs test,DC=domtest,DC=lan, CN=grimptech,OU=utilisateurs
test,DC=domtest,DC=lan, CN=grserveurs,OU=utilisateurs test,DC=domtest,DC=lan,
CN=grcommun,OU=utilisateurs test,DC=domtest,DC=lan}
Name : Lee Nux
ObjectClass : user
ObjectGUID : 899597e7-0067-4d36-93e1-16ecac1616a1
OfficePhone : 01 02 33 44 55
SamAccountName : lnux
SID : S-1-5-21-1212780272-13945088-1065478795-1106
Surname : Nux
UserPrincipalName : Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
quelques explications sur la solution :
- j'ai créé une propriété personnalisée dans le select que j'ai appelé groupes, grace à @{name = 'Groupes'; expression = { }}
- Dans cette propriété, dans expression, je peut y mettre du code
- dans ce code, je travail l'attribut "MemberOf" pour qu'il soit utilisable dans un fichier excel
1 -> suppression des CN=, OU= et DN= pour ne garder que le nom du groupe. le -replace '^CN=([^,]+).+$','$1' cette dernière partie est un expression régulière.
2 -> suppression des sauts de lignes, le -join ","
pour info : $_ de $_.MemberOf contient l'objet transmis par le pipeline " | ". Ici l'objet AD d'un utilisateur
si j'ai bien fait le copier/coller, tu remplace ta ligne par celle ci et c'est tout !!
$excel = Get-ADUser -Filter * -SearchBase "OU=MONOU,DC=MONDOMAINE,DC=local" -Properties sAMAccountName, department, Mail, OfficePhone, Company, MemberOf |
Select-Object sAMAccountName, department, Mail, OfficePhone, Company, @{name = 'Groupes'; expression = {$_.MemberOf -replace '^CN=([^,]+).+$','$1' -join ", "}} |
Select -First 130 | Export-Excel $xlfile -AutoSize -StartRow 2 -TableName Utilisateurs -PassThru
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 2 ans 8 mois #31725
par Arnaud
Réponse de Arnaud sur le sujet Export d'infos issues de l'AD dans fichier Excel
Bonsoir Philippe,
C'est ou qu'on envoie la caisse de champagne ?! ^^
Tu es mon héro de ces 3 derniers jours passés sur le sujet !!!
Merci, merci et encore merci !
C'est ou qu'on envoie la caisse de champagne ?! ^^
Tu es mon héro de ces 3 derniers jours passés sur le sujet !!!
Merci, merci et encore merci !
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.108 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Export d'infos issues de l'AD dans fichier Excel