Question Récupérer UID LDAP Unix pour créer compte AD

Plus d'informations
il y a 13 ans 6 mois #2071 par Arnaud Petitjean
Salut Spz,

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.

Plus d'informations
il y a 13 ans 6 mois #2074 par bill_
Bonjour Arnaud

Ok, je viens de faire l'essai et je comprends mieux maintenant :P

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

Svp le temps presse :( sinon je suis cuit :unsure:

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.

Plus d'informations
il y a 13 ans 6 mois #2076 par bill_
Je viens de comprendre, en fait ceci :

[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(\&quot;cn=toto,ou=people,dc=masociété,dc=fr\&quot;,\&quot;passwd\&quot;«»)[/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( &lt;&lt;&lt;&lt; $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.

Plus d'informations
il y a 13 ans 6 mois #2077 par Laurent Dardenne
Salut,
spz écrit:

Mais j'ai un problème avec la connexion non anonyme

Le pb n'est pas là je pense.
spz écrit:

[code:1]Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
[/code:1]

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.

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.

Plus d'informations
il y a 13 ans 6 mois #2078 par bill_
J'ai essayé avec un mot de passe erroné mais c'est la même chose, voici le bout de code concernant la connexion :

[code:1]$ldapConn.Connect($serveur,389)
$ldapConn.Bind(\&quot;cn=toto,ou=people,dc=masociété,dc=fr\&quot;,\&quot;passwd\&quot;«»)

$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 = \&quot;cn=toto,ou=people,dc=masociété,dc=fr\&quot;
$ldapConn.Bind($DN,\&quot;passwd\&quot;«»)[/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 :) en particulier l'uid<br><br>Message édité par: spz, à: 3/04/08 13:05

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

Plus d'informations
il y a 13 ans 6 mois #2083 par Arnaud Petitjean
Salut Spz,

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(\&quot;Novell.Directory.Ldap\&quot;«»)[/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,\&quot;passwd\&quot;«»)
$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.

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