Question Export des comptes utilisateurs AD spécial

Plus d'informations
il y a 7 ans 3 mois #27873 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 ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 3 mois #27884 par Philippe
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]

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.076 secondes
Propulsé par Kunena