Question
[Résolu] Fonction avec Arguments
- buissonneau
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 78
- Remerciements reçus 0
il y a 8 ans 7 mois #24047
par buissonneau
Francis
Réponse de buissonneau sur le sujet Re:Fonction avec Arguments
Hello Laurent,
En faite l'idée de la fonction c'était dans un premier temps pour la conception d'un script de création de compte qui récupère des informations dans un Open Ldap pour renseigner/créer les comptes dans un ActiveDirectory.
C'est pourquoi je récupère toutes les informations, car après il y aura un traitement par boucle pour chaque entrée du LDAP. D'où le $objMaRechercheOpenLdap.FindAll().
Donc ca pas de soucis.
Après suite à des remarques de collègues sur le côté pas très pratique de consulter le LDAP (autre que via des logiciels comme Apache Directory Studio, Ldap Browser and Co.), je me suis dis que je devrais pouvoir exploiter la fonction searchLdap et l'adapter à des requêtes précises. (puis cela permet de pratiquer et d'apprendre de nouvelles choses.)
Et du coup pouvoir exploiter la sortie du résultat SearchLdap et y ajouter des commutateurs comme -Mail pour ne récupérer que le mail dans la console, ou -Service pour ne récupérer que le service etc..
Alors même si je comprend qu'il faudra que je déclare chaque commutateur que je veux offrir à mes usagers, il semble que je n'arrive pas à appliquer une action sur le IF.
Je vais lire ce que tu m'a ajouter et creuser.
Je pense que la ou je bloque c'est sur l'interprétation et comment le résultat est traité dans la fonction.
Je relire un peu tout ce que tu m'a donné à tête reposer pour bien l'intégrer.
Merci Laurent.
En faite l'idée de la fonction c'était dans un premier temps pour la conception d'un script de création de compte qui récupère des informations dans un Open Ldap pour renseigner/créer les comptes dans un ActiveDirectory.
C'est pourquoi je récupère toutes les informations, car après il y aura un traitement par boucle pour chaque entrée du LDAP. D'où le $objMaRechercheOpenLdap.FindAll().
Donc ca pas de soucis.
Après suite à des remarques de collègues sur le côté pas très pratique de consulter le LDAP (autre que via des logiciels comme Apache Directory Studio, Ldap Browser and Co.), je me suis dis que je devrais pouvoir exploiter la fonction searchLdap et l'adapter à des requêtes précises. (puis cela permet de pratiquer et d'apprendre de nouvelles choses.)
Et du coup pouvoir exploiter la sortie du résultat SearchLdap et y ajouter des commutateurs comme -Mail pour ne récupérer que le mail dans la console, ou -Service pour ne récupérer que le service etc..
Alors même si je comprend qu'il faudra que je déclare chaque commutateur que je veux offrir à mes usagers, il semble que je n'arrive pas à appliquer une action sur le IF.
Je vais lire ce que tu m'a ajouter et creuser.
Je pense que la ou je bloque c'est sur l'interprétation et comment le résultat est traité dans la fonction.
Je relire un peu tout ce que tu m'a donné à tête reposer pour bien l'intégrer.
Merci Laurent.
Francis
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 7 mois #24049
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Fonction avec Arguments
xaviar écrit:
Tu as un traitement, différent pour chaque attribut ?
Quelles données tu renvoies ? une par attribut ou un objet constitué à partir des attributs choisis ?
Pour comprendre/étudier le principe laisse tomber le code existant et utilise en un très simple (limite du pseudo code).
Quel traitement veux tu faire ?Alors même si je comprend qu'il faudra que je déclare chaque commutateur que je veux offrir à mes usagers, il semble que je n'arrive pas à appliquer une action sur le IF.
Tu as un traitement, différent pour chaque attribut ?
Quelles données tu renvoies ? une par attribut ou un objet constitué à partir des attributs choisis ?
Pour comprendre/étudier le principe laisse tomber le code existant et utilise en un très simple (limite du pseudo code).
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- buissonneau
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 78
- Remerciements reçus 0
il y a 8 ans 7 mois #24050
par buissonneau
Francis
Réponse de buissonneau sur le sujet Re:Fonction avec Arguments
Un peu comme tu a mis dans ton code avec les switch.
Si -Mail dans la ligne de commande (searchldap -uid 12345 -mail) j'exécute:
[code:1]
$result.Properties.Item(\"mail\"«»)
[/code:1]
ou le $result est de type System.DirectoryServices.SearchResult et contient donc toutes les propriétés de mon compte 12345. (mail, service, groupe...)
si je tape $result (en faisant un $result = searchldap -uid 12345)tout seul j'obtiens cela :
[code:1]
Path Properties
----
LDAP://ldap.test.fr:389/uid=12345,ou=People,dc=test,dc=fr {annucodetg, givenname, annulibsite, Mail...
[/code:1]
Mais vu qu' à l'arrivé $result serait le résultat de la fonction sans le commutateur mail ou autre, je pense que je ne peux pas intégrer le tout dans la fonction, non?
et donc en sortie dans la console j'aurais que le mail qui apparaitra.
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
Je sais pas si je suis clair.
Si -Mail dans la ligne de commande (searchldap -uid 12345 -mail) j'exécute:
[code:1]
$result.Properties.Item(\"mail\"«»)
[/code:1]
ou le $result est de type System.DirectoryServices.SearchResult et contient donc toutes les propriétés de mon compte 12345. (mail, service, groupe...)
si je tape $result (en faisant un $result = searchldap -uid 12345)tout seul j'obtiens cela :
[code:1]
Path Properties
----
LDAP://ldap.test.fr:389/uid=12345,ou=People,dc=test,dc=fr {annucodetg, givenname, annulibsite, Mail...
[/code:1]
Mais vu qu' à l'arrivé $result serait le résultat de la fonction sans le commutateur mail ou autre, je pense que je ne peux pas intégrer le tout dans la fonction, non?
et donc en sortie dans la console j'aurais que le mail qui apparaitra.
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
Je sais pas si je suis clair.
Francis
Connexion ou Créer un compte pour participer à la conversation.
- buissonneau
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 78
- Remerciements reçus 0
il y a 8 ans 7 mois #24051
par buissonneau
Francis
Réponse de buissonneau sur le sujet Re:Fonction avec Arguments
voilà, j'arrive à ce que je veux en faisant cela:
[code:1]
function selectldap {
param(
[switch]$mail,
[switch]$service
)
$info = Read-Host \"entrez uid\"
#appel de la fonction SearchLdap
$result = SearchLdap -UID $info
if ($mail) {$result.Properties.Item(\"Mail\"«»)}
if ($service) {$result.Properties.Item(\"Service\"«»)}
}
[/code:1]
Bon ca court circuit un peu ma fonction searchldap vu que je demande forcément l'UID, mais le résultat est bien le mail avec la commande :
[code:1]
selectLdap -mail
[/code:1]
Donc ma petite question serait n'y aurait-il pas moyen d'integrer cela à ma fonction searchldap et si le commutateur -mail ou -service ou autre est mis exécuter l'action demandée?
Ca avance
<br><br>Message édité par: xaviar, à: 28/07/17 13:36
[code:1]
function selectldap {
param(
[switch]$mail,
[switch]$service
)
$info = Read-Host \"entrez uid\"
#appel de la fonction SearchLdap
$result = SearchLdap -UID $info
if ($mail) {$result.Properties.Item(\"Mail\"«»)}
if ($service) {$result.Properties.Item(\"Service\"«»)}
}
[/code:1]
Bon ca court circuit un peu ma fonction searchldap vu que je demande forcément l'UID, mais le résultat est bien le mail avec la commande :
[code:1]
selectLdap -mail
[/code:1]
Donc ma petite question serait n'y aurait-il pas moyen d'integrer cela à ma fonction searchldap et si le commutateur -mail ou -service ou autre est mis exécuter l'action demandée?
Ca avance
Francis
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 7 mois #24052
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Fonction avec Arguments
xaviar écrit:
Je comprend vite, mais faut m'expliquer longtemps
Lorsque tu fais :
[code:1]
$result = SearchLdap -UID $info
if ($mail) {$result.Properties.Item(\"Mail\"«»)}
if ($service) {$result.Properties.Item(\"Service\"«»)}
}
[/code:1]
Tu ne souhaites pas construire un objet mais afficher aux utilisateurs uniquement les attributs sélectionnés ?
C'est bien cela ?
Je te répondrai ensuite sur les autres points.
Si.Je sais pas si je suis clair.
Je comprend vite, mais faut m'expliquer longtemps
Lorsque tu fais :
[code:1]
$result = SearchLdap -UID $info
if ($mail) {$result.Properties.Item(\"Mail\"«»)}
if ($service) {$result.Properties.Item(\"Service\"«»)}
}
[/code:1]
Tu ne souhaites pas construire un objet mais afficher aux utilisateurs uniquement les attributs sélectionnés ?
C'est bien cela ?
Je te répondrai ensuite sur les autres points.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 7 mois #24054
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Fonction avec Arguments
Une autre question, avec l'UID tu récupères bien un seul objet ? c'est une identifiant unique ?
Si c'est le cas, je me demandais pourquoi ne pas inclure cet ID unique dans les critères de recherche :
[code:1]
$strFilter = \"(&(objectClass=Employee)(objectClass=Person))\"
[/code:1]
Si c'est le cas, je me demandais pourquoi ne pas inclure cet ID unique dans les critères de recherche :
[code:1]
$strFilter = \"(&(objectClass=Employee)(objectClass=Person))\"
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.111 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Fonction avec Arguments