Question
Export des comptes utilisateurs AD spécial
- Eilkh
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 7 ans 3 mois #27873
par Eilkh
Export des comptes utilisateurs AD spécial a été créé par Eilkh
Bonjour,
pour les besoins d'un audit en entreprise, je dois lister l'ensemble des comptes utilisateurs de l'AD et indiquer si l'utilisateur est membre du groupe Admins du domaine ou non, en plus des autres informations classiques demandées (date de création, dernière modification, actif ou non, ...).
A ce jour, voici le script que j'utilise pour créer mon csv listant mes utilisateurs (actifs ou non) :
[code:1]import-module activedirectory
$utilisateurs = Get-ADUser -Filter * -Properties *
$tableau = @()
foreach ($user in $utilisateurs)
{
$ajout = New-Object Psobject
$ajout | Add-Member -Name \"ACCOUNTNAME\" -MemberType Noteproperty -value $user.SamAccountName
$ajout | Add-Member -Name \"NAME\" -MemberType Noteproperty -value $user.Surname
$ajout | Add-Member -Name \"FIRST NAME\" -MemberType Noteproperty -value $user.GivenName
$ajout | Add-Member -Name \"CREATION DATE\" -MemberType Noteproperty -value $user.Created
$ajout | Add-Member -Name \"LAST MODIFICATION DATE\" -MemberType Noteproperty -value $user.Modified
$ajout | Add-Member -Name \"ENABLED\" -MemberType Noteproperty -value $user.Enabled
$tableau += $ajout
}
$tableau | Export-Csv -NoType AD_UsersExport_$((Get-Date).ToString('yyyyMMdd')).csv[/code:1]
J'aimerai juste ajouter une colonne au tableau en sortie m'indiquant si l'utilisateur est membre du groupe \"Domain Admins\" ou pas en affichant juste (par exemple) Admin si l'utilisateur est présent dans le groupe ou User s'il ne l'est pas.
J'arrive à lister les membres du groupe en question avec ceci :
[code:1]Get-ADGroupMember \"Admins du domaine\" -Recursive | Select SamAccountName[/code:1]
Mais je ne sais pas comment utiliser cette information pour faire ce que je veux...
Pouvez-vous m'aider svp ?
pour les besoins d'un audit en entreprise, je dois lister l'ensemble des comptes utilisateurs de l'AD et indiquer si l'utilisateur est membre du groupe Admins du domaine ou non, en plus des autres informations classiques demandées (date de création, dernière modification, actif ou non, ...).
A ce jour, voici le script que j'utilise pour créer mon csv listant mes utilisateurs (actifs ou non) :
[code:1]import-module activedirectory
$utilisateurs = Get-ADUser -Filter * -Properties *
$tableau = @()
foreach ($user in $utilisateurs)
{
$ajout = New-Object Psobject
$ajout | Add-Member -Name \"ACCOUNTNAME\" -MemberType Noteproperty -value $user.SamAccountName
$ajout | Add-Member -Name \"NAME\" -MemberType Noteproperty -value $user.Surname
$ajout | Add-Member -Name \"FIRST NAME\" -MemberType Noteproperty -value $user.GivenName
$ajout | Add-Member -Name \"CREATION DATE\" -MemberType Noteproperty -value $user.Created
$ajout | Add-Member -Name \"LAST MODIFICATION DATE\" -MemberType Noteproperty -value $user.Modified
$ajout | Add-Member -Name \"ENABLED\" -MemberType Noteproperty -value $user.Enabled
$tableau += $ajout
}
$tableau | Export-Csv -NoType AD_UsersExport_$((Get-Date).ToString('yyyyMMdd')).csv[/code:1]
J'aimerai juste ajouter une colonne au tableau en sortie m'indiquant si l'utilisateur est membre du groupe \"Domain Admins\" ou pas en affichant juste (par exemple) Admin si l'utilisateur est présent dans le groupe ou User s'il ne l'est pas.
J'arrive à lister les membres du groupe en question avec ceci :
[code:1]Get-ADGroupMember \"Admins du domaine\" -Recursive | Select SamAccountName[/code:1]
Mais je ne sais pas comment utiliser cette information pour faire ce que je veux...
Pouvez-vous m'aider svp ?
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 7 ans 3 mois #27884
par Philippe
Réponse de Philippe sur le sujet Re:Export des comptes utilisateurs AD spécial
salut Eilkh
je ne sais pas quel est ne nombre d'employer de ton entreprise mais quand on commence à dépassé quelques centaines, il faut optimisé les requêtes vers le serveur de domaine !
sur ce premier point tu peut amélioré ton script en chargent que les propriétés utile dans le get-aduser
si il n'y avais pas eu d'héritage de d'autorisation dans les groupes tu aurai pu aussi utilisé la propriété MemberOf de get-aduser
malheureusement je ne connais pas ton infra et habitude d'attribution d'autorisation. D'habitude on évite de mettre un groupe dans le groupe \"admins du domaine\"
avec Get-ADGroupMember la liste des admins dans une variable, je te conseil mettre le résultat au format tableau de string avec l'option ExpandProperty
apres il te suffit de faire un if contains pour comparé la liste à l'utilisateur de la boucle
et ça donne :
[code:1]import-module activedirectory
$utilisateurs = Get-ADUser -Filter * -Properties Created, Modified
$admins = Get-ADGroupMember \"Admins du domaine\" -Recursive | Select -ExpandProperty SamAccountName
$tableau = @()
foreach ($user in $utilisateurs) {
$ajout = New-Object Psobject
$ajout | Add-Member -Name \"ACCOUNTNAME\" -MemberType Noteproperty -value $user.SamAccountName
$ajout | Add-Member -Name \"NAME\" -MemberType Noteproperty -value $user.Surname
$ajout | Add-Member -Name \"FIRST NAME\" -MemberType Noteproperty -value $user.GivenName
$ajout | Add-Member -Name \"CREATION DATE\" -MemberType Noteproperty -value $user.Created
$ajout | Add-Member -Name \"LAST MODIFICATION DATE\" -MemberType Noteproperty -value $user.Modified
$ajout | Add-Member -Name \"ENABLED\" -MemberType Noteproperty -value $user.Enabled
if ($admins -contains $user.SamAccountName) {
$ajout | Add-Member -Name \"ADMIN\" -MemberType Noteproperty -value \"admin\"
}
else {
$ajout | Add-Member -Name \"ADMIN\" -MemberType Noteproperty -value \"\"
}
$tableau += $ajout
}
$tableau | Export-Csv -NoType AD_UsersExport_$((Get-Date).ToString('yyyyMMdd')).csv
[/code:1]
je ne sais pas quel est ne nombre d'employer de ton entreprise mais quand on commence à dépassé quelques centaines, il faut optimisé les requêtes vers le serveur de domaine !
sur ce premier point tu peut amélioré ton script en chargent que les propriétés utile dans le get-aduser
si il n'y avais pas eu d'héritage de d'autorisation dans les groupes tu aurai pu aussi utilisé la propriété MemberOf de get-aduser
malheureusement je ne connais pas ton infra et habitude d'attribution d'autorisation. D'habitude on évite de mettre un groupe dans le groupe \"admins du domaine\"
avec Get-ADGroupMember la liste des admins dans une variable, je te conseil mettre le résultat au format tableau de string avec l'option ExpandProperty
apres il te suffit de faire un if contains pour comparé la liste à l'utilisateur de la boucle
et ça donne :
[code:1]import-module activedirectory
$utilisateurs = Get-ADUser -Filter * -Properties Created, Modified
$admins = Get-ADGroupMember \"Admins du domaine\" -Recursive | Select -ExpandProperty SamAccountName
$tableau = @()
foreach ($user in $utilisateurs) {
$ajout = New-Object Psobject
$ajout | Add-Member -Name \"ACCOUNTNAME\" -MemberType Noteproperty -value $user.SamAccountName
$ajout | Add-Member -Name \"NAME\" -MemberType Noteproperty -value $user.Surname
$ajout | Add-Member -Name \"FIRST NAME\" -MemberType Noteproperty -value $user.GivenName
$ajout | Add-Member -Name \"CREATION DATE\" -MemberType Noteproperty -value $user.Created
$ajout | Add-Member -Name \"LAST MODIFICATION DATE\" -MemberType Noteproperty -value $user.Modified
$ajout | Add-Member -Name \"ENABLED\" -MemberType Noteproperty -value $user.Enabled
if ($admins -contains $user.SamAccountName) {
$ajout | Add-Member -Name \"ADMIN\" -MemberType Noteproperty -value \"admin\"
}
else {
$ajout | Add-Member -Name \"ADMIN\" -MemberType Noteproperty -value \"\"
}
$tableau += $ajout
}
$tableau | Export-Csv -NoType AD_UsersExport_$((Get-Date).ToString('yyyyMMdd')).csv
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.064 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Export des comptes utilisateurs AD spécial