Question AD : Lister OU d'1 user - travail/chaine2caractère

Plus d'informations
il y a 8 ans 6 mois #12415 par CGR
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]

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

Plus d'informations
il y a 8 ans 6 mois #12416 par CGR
ooops j'ai validé sans avoir fini mon dernier message


Merci pour votre aide

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

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