Question OpenLdap

Plus d'informations
il y a 15 ans 11 mois #6519 par Jireck
Réponse de Jireck sur le sujet Re:OpenLdap
Salut Arnaud

Arnaud écrit:

Et dis donc, ça sens la migration vers AD chez toi on dirait... ;)

Non, du tout.... ce que je fais c'est lancé périodiquement ... l'annuaire OpenLdap est un annuaire centralisé de 30 000 Âmes + les groupes associés....
et je dois récupéré régulièrement mes 1500 à 2000 âmes...

Et puis ne t'inquiète pas Arnaud tu pourra m'aider ...
rien que pour optimiser le code s'il est fonctionnel..
Ou autre ..

J'ai l'habitude de partager et de contribuer... ;-)

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

Plus d'informations
il y a 15 ans 11 mois #6522 par Jireck
Réponse de Jireck sur le sujet Re:OpenLdap
Et je reviens ....

Je dois être null ou bien ...

J'explique :
Je construit mes fonctions qui m'ont l'air correct puis je les appelle bêtement (<= ca doit être ca)

Fonction :
#Connection OpenLdap
#
Function ConnectAg(){
Param($user,
$password = $(Read-Host \"Enter Password\" -asSec),
$server = $(throw '$server is required'),
$path = $(throw '$path is required'),
[switch]$verbose)

if($verbose){$verbosepreference = \"Continue\"}

$DN = 'LDAP://'+$server+'/'+$path
Write-Verbose \"DN = $DN\"
$auth = [System.DirectoryServices.AuthenticationTypes]::FastBind
Write-Verbose \"Auth = FastBind\"
$AGconnect = New-Object System.DirectoryServices.DirectoryEntry($DN,$user,(GetSecurePass $Password),$auth)

return $AGconnect
}
# Doc Groupe search and Return Member
# Connection Obligatoire
Function AG_GroupToMember($group,$connectAG){

# Filtre Groupe
$filter = \"(objectclass=aglngroup)\"
Write-Verbose \"Filter: $filter\"
$GetGroup = New-Object system.DirectoryServices.DirectorySearcher($connectAG,$filter)
Write-Verbose $GetGroup
$GetGroup.FindAll() | Where-Object {
$_.Properties.cn -eq \"$group\" | foreach-Object {
$allmember = $i.Properties.member
$i.Properties.member
}
}
return $allmember
}
## ZONE DE TEST
ConnectAg -user 'uid=poweropenldap,ou=xx,ou=xx,dc=domain,dc=org' -server serveur.domain.org -path 'dc=domain,dc=org' -verbose
AG_GroupToMember \"Personnels-Service_xxx\" $AGconnect

## FIN

Une petite explication silvousplait...:dry:
j'ai essayer plusieurs appels de fonctionmais bon .... please

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

Plus d'informations
il y a 15 ans 11 mois #6525 par ken
Réponse de ken sur le sujet Re:OpenLdap
Bonjour,

Je voudrais pas que tu te sentes seul alors je vais répondre de suite....

Il me semble que dans le deuxième fonction, tu fais un return.

Donc il faut que tu stockes le résultat dans une variable.... j'aurai tendance à l'écrire comme ceci par conséquent:

$x = AG_GroupToMember \"Personnels-Service_xxx\" $AGconnect

Voir même :
$group = \"Personnels-Service_xxx\"
$x = AG_GroupToMember $group $AGconnect

Pour la première, je suis pas très à l'aise avec la syntaxe.

Tiens nous au courant :) Courage.

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

Plus d'informations
il y a 15 ans 11 mois #6526 par Jireck
Réponse de Jireck sur le sujet Re:OpenLdap
Merci pour cet aide ken94

Je vais couper juste mon code pour que ce soit plus clair

Fonction :
[code:1]#Connection OpenLdap
#
Function ConnectAg(){
Param($user,
$password = $(Read-Host \"Enter Password\" -asSec),
$server = $(throw '$server is required'),
$path = $(throw '$path is required'),
[switch]$verbose)

if($verbose){$verbosepreference = \"Continue\"}

$DN = 'LDAP://'+$server+'/'+$path
Write-Verbose \"DN = $DN\"
$auth = [System.DirectoryServices.AuthenticationTypes]::FastBind
Write-Verbose \"Auth = FastBind\"
$AGconnect = New-Object System.DirectoryServices.DirectoryEntry($DN,$user,(GetSecurePass $Password),$auth)

return $AGconnect
}[/code:1]


[code:1]# Doc Groupe search and Return Member
# Connection Obligatoire
Function AG_GroupToMember($group,$connectAG){

# Filtre Groupe
$filter = \"(objectclass=aglngroup)\"
Write-Verbose \"Filter: $filter\"
$GetGroup = New-Object system.DirectoryServices.DirectorySearcher($connectAG,$filter)
Write-Verbose $GetGroup
$GetGroup.FindAll() | Where-Object {
$_.Properties.cn -eq \"$group\" | foreach-Object {
$allmember = $i.Properties.member
$i.Properties.member
}
}
return $allmember
}[/code:1]


[code:1]## ZONE DE TEST
ConnectAg -user 'uid=poweropenldap,ou=xx,ou=xx,dc=domain,dc=org' -server serveur.domain.org -path 'dc=domain,dc=org' -verbose
AG_GroupToMember \"Personnels-Service_xxx\" $AGconnect

## FIN[/code:1]

c'est comme si $AGconnect etait vide...??
apres verification il est vide....
Il s'affiche mais il n'est pas garder donc ma deuxieme fonction merdoie ....

c'est une question de porté de variable ou bien appel de fonction ou autre ...???

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

Plus d'informations
il y a 15 ans 11 mois #6532 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:OpenLdap
Jireck,

Quelques remarques :

1. Je remarque que la façon dont tu crées tes fonctions n'est très homogène. Dans un cas, tu utilises Param, et dans l'autre tu définis tes paramètres directement dans la création de la fonction.

Pour ma part, j'utilise Param systèmatiquement.

2. Pourquoi mets-tu des parenthèses à la fin de du nom de ta fonction ?
ex : Function ConnectAg()

C'est à bannir, enlève les.

3. Le mot clé Return ne sert à rien, car Powershell retourne toute variable. De plus, j'ai déjà rencontré des cas où l'utilisation de Return posait plus de problème que de ne pas le mettre. Tu peux essayer de t'en passer en mettant simplement à la fin de ta fonction : $AGconnect au lieu de return $AGconnect

4. Effectivement Ken a raison, il faut stocker ton résultat :

Exemple :

[code:1]
## ZONE DE TEST

$AGconnect = ConnectAg -user 'uid=poweropenldap,ou=xx,ou=xx,dc=domain,dc=org' -server serveur.domain.org -path 'dc=domain,dc=org' -verbose

AG_GroupToMember \"Personnels-Service_xxx\" $AGconnect[/code:1]

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

Plus d'informations
il y a 15 ans 11 mois #6536 par Jireck
Réponse de Jireck sur le sujet Re:OpenLdap
Je réponds vite fait puis vais normaliser mon code....

question paramètre VS arguments, je développe en PHP et j'ai de rudes habitudes comme :
Mettre de () en fin de fonction.
Mettre de return afin de faire des retours de variable exploitable ensuite...


le mieux étant quoi ?
[code:1]
function toto {
param
}

ou

funtion toto ($a,$b,$c){

}[/code:1]

J'aurais tendance à préféré la deuxième ...

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

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