Connexion Ldap unix en PowerShell

superzero93 Messages postés 7 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 7 juin 2009 - 31 mars 2008 à 21:26
superzero93 Messages postés 7 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 7 juin 2009 - 3 avril 2008 à 14:33
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

superzero93 Messages postés 7 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 7 juin 2009
2 avril 2008 à 09:51
Bonjour,

Up! svp!, merci ^^
0
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
2 avril 2008 à 11:12
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...
0
superzero93 Messages postés 7 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 7 juin 2009
2 avril 2008 à 11:23
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é
0
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
2 avril 2008 à 11:40
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
superzero93 Messages postés 7 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 7 juin 2009
2 avril 2008 à 11:57
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 <_<
0
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
2 avril 2008 à 12:08
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...
0
superzero93 Messages postés 7 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 7 juin 2009
2 avril 2008 à 12:14
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 ^^
0
superzero93 Messages postés 7 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 7 juin 2009
3 avril 2008 à 13:41
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
0
superzero93 Messages postés 7 Date d'inscription vendredi 28 mars 2008 Statut Membre Dernière intervention 7 juin 2009
3 avril 2008 à 14:33
J'ai oublié de préciser une chose, je me connecte sur ce user afin de récupérer son uid :)
0