Question
Récupérer UID LDAP Unix pour créer compte AD
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
Lorsque tu utilises la syntaxe suivante :
[code:1]. .\test.ps1[/code:1]
Tu fais ce que l'on appelle du \"dotSourcing\". Cela signifie que tu exécutes ton script dans la portée courante. Par conséquent ton script crée une fonction, et c'est la raison pour laquelle tu peux appeler ensuite ta fonction juste en tappant son nom. Il faudrait que tu creuses un peu le mécanisme de portée ou d'étendues. Nous en parlons dans notre livre car c'est une notion importante. Je ne pense pas avoir traité ce point sur ce site en dehors du forum.
Essaye une recherche dans le forum, ça devrait suffir dans un premier temps pour t'éclairer un peu sur le sujet ou sinon utilise l'aide en ligne \"help about_scopes\".
Donc si tu veux pouvoir appeler ta fonction ainsi :
[code:1]./requete_ldap.ps1 \"nom-du-serveur\" \"uid=12345,ou=people,dc=masociété,dc=fr\" \"toto\"[/code:1]
Il faut que tu supprimes la fonction de ton script; je veux parler du mot clé \"function blablabla {...}\" et que tu renommes ton script avec le nom de ta fonction.
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 ou d'un conseil ?
Connexion ou Créer un compte pour participer à la conversation.
- bill_
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 74
- Remerciements reçus 0
Ok, je viens de faire l'essai et je comprends mieux maintenant

Sinon concernant l'erreur ci-dessus j'ai du mal, pourtant c'est exactement le même script de philou

Svp le temps presse


Et pour une connexion avec un login et mot de passe, il faut modifier $LdapConn.Bind($null,$null) ?
J'ai trouvé ça sur le site de Novell :
Binding using an Identity
// C# Library namespace
using Novell.Directory.Ldap;
// Creating an LdapConnection instance
LdapConnection ldapConn= new LdapConnection();
//Connect function will create a socket connection to the server
ldapConn.Connect(ldapHost,ldapPort);
//Bind function will Bind the user object Credentials to the Server
ldapConn.Bind(userDN,userPasswd);
Mais l'instance ne fonctionne pas :
[code:1]
LdapConnection $ldapConn = new LdapConnection($serveur);[/code:1]
L'erreur :
[code:1]Source : System.Management.Automation.CommandNotFoundException
Erreur : Le terme « LdapConnection » n'est pas reconnu en tant qu'applet de commande, fonction, programme exécutable ou
fichier de script. Vérifiez le terme et réessayez.
Le terme « LdapConnection » n'est pas reconnu en tant qu'applet de commande, fonction, programme exécutable ou fichier
de script. Vérifiez le terme et réessayez.
Au niveau de C:\Scripts\test.ps1 : 21 Caractère : 17
+ LdapConnection <<<< $ldapConn = new LdapConnection($serveur);
False[/code:1]
Message édité par: spz, à: 3/04/08 10:24<br><br>Message édité par: spz, à: 3/04/08 10:53
Connexion ou Créer un compte pour participer à la conversation.
- bill_
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 74
- Remerciements reçus 0
[code:1]LdapConnection $ldapConn = new LdapConnection($serveur);[/code:1]
Correspond à ça :
[code:1]$ldapConn = new-object Novell.Directory.Ldap.LdapConnection[/code:1]
Mais j'ai un problème avec la connexion non anonyme

Edit :
J'ai fait ceci :
[code:1]$ldapConn.Bind(\"cn=toto,ou=people,dc=masociété,dc=fr\",\"passwd\"«»)[/code:1]
Mais ça me dit ce message :
[code:1]Source : System.Management.Automation.RuntimeException
Erreur : Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
Au niveau de C:\Scripts\test.ps1 : 21 Caractère : 41
+ $attribute = $Entry.getAttribute( <<<< $attribut)[/code:1]
Merci

Message édité par: spz, à: 3/04/08 10:52<br><br>Message édité par: spz, à: 3/04/08 10:52
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6290
- Remerciements reçus 67
spz écrit:
Le pb n'est pas là je pense.Mais j'ai un problème avec la connexion non anonyme
spz écrit:
Comme je te le disais précédemment l'objet $Entry est à $Null, aucune donnée ne correspond à celles recherchées. On ne peut donc rien faire avec qq chose qui n'existe pas, surtout pas appeller une méthode.[code:1]Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
[/code:1]
Tout semble fonctionner il reste à savoir si les infos passés dans $Attribut sont correctes. Je suppose que tu as un autre moyen de le vérifier.
Pour être certain que tu te connectes, utilise un compte /mot de passe érroné, dans ce cas l'exception sera différente.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- bill_
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 74
- Remerciements reçus 0
[code:1]$ldapConn.Connect($serveur,389)
$ldapConn.Bind(\"cn=toto,ou=people,dc=masociété,dc=fr\",\"passwd\"«»)
$Entry = $LdapConn.Read($DN)
$attribute = $Entry.getAttribute($attribut)
$valeur = $attribute.StringValue[/code:1]
Sur le site de novell ils mettent ceci :
//Bind function will Bind the user object Credentials to the Server
ldapConn.Bind(userDN,userPasswd);
Donc j'ai essayé d'adapter, le problème c'est la variable $Entry, cela veut dire que lorsqu'il lit $DN, il n'y a rien ???
Edit : Apparemment ça à l'air de fonctionner :
[code:1]$ldapConn.Connect($serveur,389)
$DN = \"cn=toto,ou=people,dc=masociété,dc=fr\"
$ldapConn.Bind($DN,\"passwd\"«»)[/code:1]
J'ai fait comme ceci et je n'ai aucune erreur, par contre quand je l'exécute j'ai que ça :
[code:1]GAC Version Location
---
False v1.1.4322 C:\Novell.Directory.Ldap.dll[/code:1]
Or j'aimerais bien récupérer des infos sur cet utilisateur

Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
Concernant le message qui s'affiche, c'est le résultat du chargement de l'assembly. Pour le voir disparaitre il faut que tu mettes [void] devant la commande, ce qui devrait donner ceci:
[code:1][void][Reflection.Assembly]::LoadWithPartialName(\"Novell.Directory.Ldap\"«»)[/code:1]
j'aimerais bien récupérer des infos sur cet utilisateur en particulier l'uid
Je n'ai pas de moyen de tester mais une piste pour comprendre comment y arriver serait d'utiliser la commandelette Get-Member sur l'objet résultant de ta ligne de commandes. Tu pourrais essayer ceci :
[code:1]
...
$ret = $ldapConn.Bind($DN,\"passwd\"«»)
$ret | Get-Member
[/code:1]
Avec un peu de chances ça te listera les méthodes et propriétés utilisables et tu trouveras la propriété qui t'interesses...
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 ou d'un conseil ?
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Récupérer UID LDAP Unix pour créer compte AD