Connexion Ldap unix en PowerShell

Signaler
Messages postés
7
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
7 juin 2009
-
Messages postés
7
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
7 juin 2009
-
Bonsoir à vous,

Je suis entrain de coder en PowerShell, qui repose sur du C# pour faire des scripts d'adminsitration

D'après ce post :

http://www.csharpfr.com/infomsg_PROBLEME-LDAPV3-CSHARP_1071248.aspx

Il faut utiliser la bibliothèque de Novell pour me connecter sur un LDAP Unix (je ne sais pas quelle version pour l'instant)


Je cherche à ajouter une dll dans un assembly pour pouvoir utiliser cette dll en PowerShell


D'après mes recherches, il faut utiliser GACutil, avec la commande gacutil -i toto.dll par exemple


Sauf que je reçois ce message d'erreur :

Microsoft (R) .NET Global Assembly Cache Utility. Version 1.1.4322.573

Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.


Failure adding assembly to the cache: Attempt to install an assembly without a strong name

<!-- END TEMPLATE: bbcode_quote -->En suivant ces tutos :

http://msdn2.microsoft.com/fr-fr/library/6f05ezxy.aspx
http://msdn2.microsoft.com/fr-fr/library/xc31ft41.aspx
http://www.gridviewguy.com/ArticleDetails.aspx?articleID=179

Mais je suis bloqué, je sais plus quoi faire, il y a un problème de noms forts apparemment -_-
Ma question est, comment faire pour charger dans l'assembly cette .dll ?

Merci, bonne soirée

9 réponses

Messages postés
7
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
7 juin 2009

Bonjour,

Up! svp!, merci ^^
Messages postés
233
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
25 octobre 2010

c'est pourtant pas compliqué,

le system de nom fort, est un system de signature, afin d'identifier le createur d'une DLL

une signature se fait en deux etapes,
1) tu crées ton fichier de clé (ton premier tuto), et tu garde le fichier .snk généré
2) tu signes ton/tes assemblies avec cette clé (ton second tuto)
NB: la signature par nom fort peut etre faite lors de la compilation de la dll dans les propriétés du projet

apres relecture de ton premier post, je tiens a te preciser une chose,
tu ne peux installer dans le GAC que des dll en dotnet!

Nul ne devient grand par la guerre...
Messages postés
7
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
7 juin 2009

Merci de ta réponse :)

La .dll en question s'agit de Novell.Directory.Ldap.dll

Justement dans le second tuto je suis bloqué ici :
al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk

Je n'ai pas de fichier .netmodule, où le trouver ?

Dans le troisième tuto je suis également bloqué, dans cette étape :

csc /keyfile:MyProject.keys Program.cs


J'obtiens ceci comme résultat sous le Shell de Visual Studio 2005 :

Microsoft (R) Visual C# 2005 Compiler version 7.10.6310.4
for Microsoft (R) Windows (R) 2005 Framework version 2.0.50727
Copyright (C) Microsoft Corporation 2001-2005. All rights reserved.

fatal error CS2007: Unrecognized option: '/keyfile:MyProject.snk'

Donc je ne comprends pas, pourtant j'ai bien suivi tout ce qui était indiqué
Messages postés
233
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
25 octobre 2010

pourtant il suffit de lire ...

<li>À l'invite de commande, tapez la commande suivante :

al/out:<nom de l'assembly> <nom du module>/keyfile:<nom du fichier>

Dans cette commande, nom de l'assembly représente le nom de l'assembly à signer avec un nom fort, nom du module représente le nom du module de code utilisé pour créer l'assembly et nom du fichier représente le nom du conteneur ou du fichier qui contient la paire de clés.

</li>
donc <nom de l'assembly> c'est le nom de la dll
<nom du module> c'est le nom du namespace de ta dll
et <nom du fichier> ... je pense que tu peux deviner par toi meme...

et pour ton tuto 3 ... CSC est le compilateur de Csharp, donc si tu veux juste faire une signature, tu n'en as pas besoin
par contre si tu veux signer une dll que tu developpe, vu que tu utilise visual studio 2005, je te conseil de passer par la propriété signature de ton projet

Nul ne devient grand par la guerre...
Messages postés
7
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
7 juin 2009

Nom namespace de la dll c'est-à-dire ? comme ils expliquent ici ?

http://www.novell.com/coolsolutions/feature/11204.html

J'ai fait ceci :

C:\Program Files\Microsoft.NET\SDK\v1.1\Bin>al /out:Novell.Directory.Ldap.dll Novell.Directory.Ldap /keyfile:sgKey.snk
Microsoft (R) Assembly Linker Version 7.10.3077
pour Microsoft (R) Windows (R) .NET Framework version 1.1.4322
Copyright (C) Microsoft Corporation 2001-2003. Tous droits réservés.

ALINK: error AL1047: Erreur lors de l'importation du fichier 'c:\Program Files\M
icrosoft.NET\SDK\v1.1\Bin\Novell.Directory.Ldap' -- Le fichier spécifié est introuvable.

Désolé mais je suis novice là dedans <_<
Messages postés
233
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
25 octobre 2010

ne serait il pas plus simple de demander a novell une version signé de leurs assemblies?
ou de faire un program C# utilisant cette assemblie?

sinon... tu est sur que ta dll se trouve dans C:\Program Files\Microsoft.NET\SDK\v1.1\Bin
??

Nul ne devient grand par la guerre...
Messages postés
7
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
7 juin 2009

Oui la .dll se trouve bien dans ce répertoire

Je vais contacter Novell qui me passe une version signé de la .dll en question et je vous tiens au courant :)

Merci quand même ^^
Messages postés
7
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
7 juin 2009

Bonjour à vous

En attendant leur réponse, j'ai bidouillé :

$Chemin = "C:\projet \ Novell.Directory.Ldap.dll"
 [Reflection.Assembly]::LoadFile($Chemin)

Je charge directement la librairie de novell, apparemment ça fonctionne

Maintenant j'essaye de me connecter à Openldap, en cherchant sur le web j'ai trouvé ceci :

param([string] $serveur, [string] $DN, [string] $attribut)
$ldapConn = new-object Novell.Directory.Ldap.LdapConnection   
$ldapConn.Connect($serveur,389)
        $DN = "cn=thomas,ou=people,dc=maboite,dc=com"
        $ldapConn.Bind($DN,"setup1234")
     
        $Entry = $LdapConn.Read($DN)
        $attribute = $Entry.getAttribute($attribut)
        $valeur = $attribute.StringValue
        $LdapConn.Disconnect() 
        return $valeur

Le problème c'est que reçois uniquement ceci sous le Shell PS quand je l'exécute :

GAC    Version        Location
---    -------        --------
False  v1.1.4322      C:\Novell.Directory.Ldap.dll

Merci de m'éclairer
Messages postés
7
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
7 juin 2009

J'ai oublié de préciser une chose, je me connecte sur ce user afin de récupérer son uid :)