Question [Résolu] Script AD, filtrage d'OU

Plus d'informations
il y a 5 ans 6 mois #27562 par AM
Bonjour,

débutant sous powershell, je sollicite votre aide pour un script que je dois réaliser au sein de mon entreprise.

Nous disposons d'un AD avec plusieurs OU et sous-OU.

Parmi mes tâches, je dois réaliser un script capable de faire un tri des utilisateurs désactivés depuis 21 jours afin de les supprimer.

dans mes ébauches, j'arrive à mes fins, hors je n'arrive pas a appliquer un filtre éventuel qui doit ignorer une OU, je m'explique avec la ligne de mon script:

[code:1]$Users = Get-ADUser -filter \"enabled -eq 'false'\" -property WhenChanged -SearchBase \"OU=SP,OU=Users Actif,OU=Entreprise,DC=fr,DC=domain,DC=local\" | where {$_.WhenChanged -le (Get-Date).AddDays(-21)} [/code:1]

Dans l'arborescence de mon OU principale \"SP\", j'ai une OU que l'on nommera \"EXT\" mais je ne sais pas comment ne pas la prendre en compte dans le résultat que j'enverrai dans un CSV : [code:1]$Users | Export-Csv C:\Temp\InactiveUsers.csv -NoTypeInformation[/code:1]

Quelqu'un a-il la solution ?

En vous remerciant par avance.<br><br>Message édité par: Arnaud, à: 20/09/18 15:05

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

Plus d'informations
il y a 5 ans 6 mois #27564 par PatriceLT
Réponse de PatriceLT sur le sujet Re:Script AD, filtrage d'OU
Bonjour,

Voici ce que tu cherches :

[code:1]$Users = Get-ADUser -filter \&quot;enabled -eq 'false'\&quot; -property WhenChanged -SearchBase \&quot;OU=SP,OU=Users Actif,OU=Entreprise,DC=fr,DC=domain,DC=local\&quot; -SearchScope \&quot;OneLevel\&quot; | where {$_.WhenChanged -le (Get-Date).AddDays(-21)}[/code:1]

Soit tu passes donc par un -SearchScope, qui va te permettre de choisir le niveau de recherche , 3 options : Base, OneLevel et Subtree

Tu as une autre méthode, c'est avant de faire ton script, rechercher toutes les OUs, via un Get-ADOrganizationalUnit -Filter {(objectClass -eq \&quot;organizationalUnit)} -Server fr.domain.local | foreach {$_.DistinguishedName}

Une fois, récupéré le DN de ton OU spécifique, tu met en variable le \&quot;Get-ADOrganizationalUnit ....\&quot; et dans ton SearcheBase tu met cette variable que si tu n'as qu'une seule OU dans ton récultat.

Lors de ton export, tu ne veux que la liste des utilisateurs ? ou tu as besoin d'avoir d'autres informations ? (désolé déformation professionnel)

Je ne sais pas si c'est très clair.

Dis moi si tu as compris le principe<br><br>Message édité par: PatriceLT, à: 19/09/18 12:11

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

Plus d'informations
il y a 5 ans 6 mois #27566 par AM
Réponse de AM sur le sujet Re:Script AD, filtrage d'OU
Je ne sais pas si j'ai saisi la totalité de tes explications; je pense en avoir compris certaines subtilités.

En fait, tu me propose de déclarer cette OU que je ne veux pas dans mon extraction en tant que variable, mais ensuite, quelle commande pourrait me permettre de la supprimer/ignorer de la requête ?

C'est là que je ne comprends pas...

En fait mon script ne tiens que sur 3 lignes, l'import du module AD, la ligne que j'ai écrite ici plus tot, et ensuite l'export au format CSV.

La finalité serait de supprimer les users qui ont été désactivé après un délai de 21 jours.

En bonus, je devrais intégrer dans ce script un déplacement des users non-actifs dans une OU existante appellée Users Inactifs, tout en conservant leur arborescence, mais vu comment je pêche actuellement, ça ne sera pas pour tout de suite !

Encore merci pour ton aide appréciable.

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

Plus d'informations
il y a 5 ans 6 mois #27567 par AM
Réponse de AM sur le sujet Re:Script AD, filtrage d'OU
Je ne sais pas si j'ai saisi la totalité de tes explications; je pense en avoir compris certaines subtilités.

En fait, tu me propose de déclarer cette OU que je ne veux pas dans mon extraction en tant que variable, mais ensuite, quelle commande pourrait me permettre de la supprimer/ignorer de la requête ?

C'est là que je ne comprends pas...

En fait mon script ne tiens que sur 3 lignes, l'import du module AD, la ligne que j'ai écrite ici plus tot, et ensuite l'export au format CSV.

La finalité serait de supprimer les users qui ont été désactivé après un délai de 21 jours.

En bonus, je devrais intégrer dans ce script un déplacement des users non-actifs dans une OU existante appellée Users Inactifs, tout en conservant leur arborescence, mais vu comment je pêche actuellement, ça ne sera pas pour tout de suite !

Encore merci pour ton aide appréciable.

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

Plus d'informations
il y a 5 ans 6 mois #27569 par de França
Réponse de de França sur le sujet Re:Script AD, filtrage d'OU
Hello,

Basé sur la réponse de Patrice ci-dessus tu stock la liste de tes OU dans une variable. Je te propose d'exclure l'OU que tu souhaite avec un -ne (not equal).

[code:1]
Get-ADOrganizationalUnit -searchbase \&quot;OU=SP,OU=Users Actif,OU=Entreprise,DC=fr,DC=domain,DC=local\&quot; -Filter {(objectClass -eq \&quot;organizationalUnit\&quot;«»)} -Server contoso.com | where{$_.name -ne \&quot;ext\&quot;} | foreach{

$Users = Get-ADUser -filter \&quot;enabled -eq 'false'\&quot; -property WhenChanged -SearchBase $($_.distinguishedName) -SearchScope \&quot;Subtree\&quot; | where {$_.WhenChanged -le (Get-Date).AddDays(-21)}

} [/code:1]

Avec le code ci-dessus tu auras la variable users contenant les users de ton filtre et excluant l'OU EXT.

Pour la suite de ton job je ne te conseil pas de déplacer dans une OU avec la même arborescence cela n'aurait pas de sens, la seul info à conserver est son DN original, tu peux stocker cette info dans un extensionAttribute du user inactif par exemple.

Donc une OU appelée User Inactifs avec tous les users à plat à l'intérieur mais par exemple l'extension attribute1 contenant l'info du DN original que tu peux récupérer sur ta variable $user ci-dessus:

[code:1]foreach($user in $users){
$userDN = $user.distinguishedname
}[/code:1]

Cela te permet en cas de restore de le placer au bon endroit.<br><br>Message édité par: unfam0us, à: 19/09/18 15:00

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

Plus d'informations
il y a 5 ans 6 mois #27570 par AM
Réponse de AM sur le sujet Re:Script AD, filtrage d'OU
Merci pour la réponse.

J'avais déjà tenté une approche similaire mais avec un code différent, le résultat est ici le même, à savoir que dans mon export, il ne me sort que le premier utilisateur de la première OU, et non pas la liste complète...
Normalement avec Subtree je devrais avoir la liste complète, non? là c'est comme si je mettais OneLevel à la place...

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

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