Question
AD : Lister OU d'1 user - travail/chaine2caractère
- CGR
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 11 ans 8 mois #12415
par CGR
Réponse de CGR sur le sujet Re:AD : Lister OU d'1 user - travail/chaine2caractère
Bonjour,
Merci à tous pour vos réponses et votre implication.
J'ai réussi à obtenir le nom de chaque OU ou un utilisateur se trouve (les noms de l'arborescence)
ex : pour un utilisateur, je récupère ceci
Name = test 5 # le nom de l'utilisateur
MIGRATION # l'OU dans laquelle est l'utilisateur
SYNCHRO # l'OU dans laquelle est l'OU de l'utilisateur
Voici la fonction que j'ai réussi à faire (si vous trouvez des améliorations, je suis preneur) :
[code:1]# TITRE
\"_____________________________________________\"
Write-Host \"Fonction pour voir dans quelles OU sont les users\"
\"_____________________________________________\"
# VARIABLES
$nameDomain = Read-Host \"Entrer le nom LDAP du domaine ou il faut chercher les infos (ex: LDAP://DC=test,DC=glb)\"
# FONCTIONS
Function User-OU
{
$objDomain = [ADSI]$nameDomain
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher($objDomain)
$objSearcher.Filter = '(objectCategory=User)'
$objSearcher.PageSize = 1000
$objSearcher.SearchScope = \"Subtree\"
$User = $objSearcher.FindAll()
foreach ($source_objResult in $User)
{
\"Name = \" + $source_objResult.Properties.name
#\"Distinguishedname = \" + $source_objResult.Properties.distinguishedname
$T2 = (($source_objResult.Properties.distinguishedname -split ',') -like \"OU=*\"«»)
foreach ($Ligne in $T2)
{
$OU_name = $Ligne.Replace('OU=','')
$OU_name
}
}
}
User-OU
[/code:1]
Voici une autre fonction que j'ai réussi à faire qui permet de retrouver suivant leur niveau d'imbrication, d'arborescence. Si on souhaite avoir toutes les OU de 3ème niveau par exemple :
[code:1]
$imbric = Read-Host \"Entrer le nombre d'imbrication des groupes que vous souhaitez afficher\"
Function Get-OU() # Renvoie toutes les OU d'un domaine selon le niveau d'imbrication
{
# Définition de la zone de recherche
$objDomain = [ADSI]\"LDAP://DC=test,DC=gbr\"
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher($objDomain)
$objSearcher.Filter = '(objectCategory=organizationalUnit)'
$objSearcher.SearchScope = 'SubTree'
$OU = $objSearcher.FindAll() | Select-object -ExpandProperty Path
foreach ($L in $OU)
{
$count = [regex]::matches(($L),\"\bOU=\b\"«»).count
if ($count -eq $imbric)
{
$L
$T = [ADSI]$L
$T.properties.ou
}
}
}
Get-OU[/code:1]
Merci à tous pour vos réponses et votre implication.
J'ai réussi à obtenir le nom de chaque OU ou un utilisateur se trouve (les noms de l'arborescence)
ex : pour un utilisateur, je récupère ceci
Name = test 5 # le nom de l'utilisateur
MIGRATION # l'OU dans laquelle est l'utilisateur
SYNCHRO # l'OU dans laquelle est l'OU de l'utilisateur
Voici la fonction que j'ai réussi à faire (si vous trouvez des améliorations, je suis preneur) :
[code:1]# TITRE
\"_____________________________________________\"
Write-Host \"Fonction pour voir dans quelles OU sont les users\"
\"_____________________________________________\"
# VARIABLES
$nameDomain = Read-Host \"Entrer le nom LDAP du domaine ou il faut chercher les infos (ex: LDAP://DC=test,DC=glb)\"
# FONCTIONS
Function User-OU
{
$objDomain = [ADSI]$nameDomain
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher($objDomain)
$objSearcher.Filter = '(objectCategory=User)'
$objSearcher.PageSize = 1000
$objSearcher.SearchScope = \"Subtree\"
$User = $objSearcher.FindAll()
foreach ($source_objResult in $User)
{
\"Name = \" + $source_objResult.Properties.name
#\"Distinguishedname = \" + $source_objResult.Properties.distinguishedname
$T2 = (($source_objResult.Properties.distinguishedname -split ',') -like \"OU=*\"«»)
foreach ($Ligne in $T2)
{
$OU_name = $Ligne.Replace('OU=','')
$OU_name
}
}
}
User-OU
[/code:1]
Voici une autre fonction que j'ai réussi à faire qui permet de retrouver suivant leur niveau d'imbrication, d'arborescence. Si on souhaite avoir toutes les OU de 3ème niveau par exemple :
[code:1]
$imbric = Read-Host \"Entrer le nombre d'imbrication des groupes que vous souhaitez afficher\"
Function Get-OU() # Renvoie toutes les OU d'un domaine selon le niveau d'imbrication
{
# Définition de la zone de recherche
$objDomain = [ADSI]\"LDAP://DC=test,DC=gbr\"
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher($objDomain)
$objSearcher.Filter = '(objectCategory=organizationalUnit)'
$objSearcher.SearchScope = 'SubTree'
$OU = $objSearcher.FindAll() | Select-object -ExpandProperty Path
foreach ($L in $OU)
{
$count = [regex]::matches(($L),\"\bOU=\b\"«»).count
if ($count -eq $imbric)
{
$L
$T = [ADSI]$L
$T.properties.ou
}
}
}
Get-OU[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- CGR
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 11 ans 8 mois #12416
par CGR
Réponse de CGR sur le sujet Re:AD : Lister OU d'1 user - travail/chaine2caractère
ooops j'ai validé sans avoir fini mon dernier message
Merci pour votre aide
Merci pour votre aide
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.071 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- AD : Lister OU d'1 user - travail/chaine2caractère