Question
OpenLdap
- Jireck
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 44
- Remerciements reçus 0
Arnaud écrit:
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 dis donc, ça sens la migration vers AD chez toi on dirait...
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.
- Jireck
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 44
- Remerciements reçus 0
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)
Une petite explication silvousplait...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
j'ai essayer plusieurs appels de fonctionmais bon .... please
Connexion ou Créer un compte pour participer à la conversation.
- ken
- Hors Ligne
- Nouveau membre
-
- Messages : 13
- Remerciements reçus 0
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
Connexion ou Créer un compte pour participer à la conversation.
- Jireck
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 44
- Remerciements reçus 0
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.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
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.
- Jireck
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 44
- Remerciements reçus 0
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.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- OpenLdap