J'ai un composant logiciel enfichable PowerShell pour manipuler une base de données. Le logiciel enfichable est juste une enveloppe pour la bibliothèque principale implémentée dans une dll de .NET distincte tout écrit en C #. P>
J'ai enregistré à la fois le logement enfichable et les DLL de mise en œuvre avec le GAC à l'aide d'installutil.exe p>
tandis que le composant logiciel enfichable fonctionne bien dans PowerShell, je dois être capable d'accéder aux détails de la DLL de mise en œuvre pour des éléments tels que Enums et similaires pour passer à travers comme des arguments sur les cmdlets. P>
Malheureusement, je ne peux pas accéder au contenu des classes à l'intérieur de PowerShell, même si les classes sont marquées comme publique et que tout ce que j'essaie d'accéder est également marqué comme public. P>
Dois-je faire quelque chose de spécial à la DLL de mise en œuvre afin de le rendre visible à l'intérieur de PowerShell? P>
3 Réponses :
Add-Type -AssemblyName "Your.Assembly.Name" Kindness,Dan
ADD-Type fonctionnera pour PowerShell V2 comme décrit par Daniel A >. Vous pouvez également utiliser la réflexion dans V1 et V2 - P> [System.Reflection.Assembly]::LoadFile('path to your dll')
J'ai utilisé la méthode de Steven pour charger la DLL. Je préfère utiliser un VaR pour le charger de manière à ce que vous ne voyiez pas le résultat de la sortie:
$loadLib = [System.Reflection.Assembly]::LoadFile('path to your dll');