Question [Résolu] Fonction avec Arguments

Plus d'informations
il y a 8 ans 7 mois #24047 par buissonneau
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.

Francis

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

Plus d'informations
il y a 8 ans 7 mois #24049 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Fonction avec Arguments
xaviar écrit:

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.

Quel traitement veux tu faire ?
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.

Plus d'informations
il y a 8 ans 7 mois #24050 par buissonneau
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.

Francis

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

Plus d'informations
il y a 8 ans 7 mois #24051 par buissonneau
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

Francis

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

Plus d'informations
il y a 8 ans 7 mois #24052 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Fonction avec Arguments
xaviar écrit:

Je sais pas si je suis clair.

Si.
Je comprend vite, mais faut m'expliquer longtemps :P

Lorsque tu fais :
[code:1]
$result = SearchLdap -UID $info
if ($mail) {$result.Properties.Item(\&quot;Mail\&quot;«»)}
if ($service) {$result.Properties.Item(\&quot;Service\&quot;«»)}
}
[/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.

Plus d'informations
il y a 8 ans 7 mois #24054 par Laurent Dardenne
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 = \&quot;(&amp;(objectClass=Employee)(objectClass=Person))\&quot;
[/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
Propulsé par Kunena