2015-10-12 1 views
2

Lorsque j'utilisePowershell: Import-module, mais pas "ExportedCommands" disponible

Import-Module -Name <path_to_local_dll> -Verbose 

les cmdlets contenues dans le dll ne sont pas exportés.

Ainsi, quand je tape Get-Module mon module importé est listé mais sans ExportedCommands?

ModuleType Name      ExportedCommands 
---------- ----      ---------------- 
Binary  MyModule 

Sur un deuxième PC avec le même logiciel (Powershell, .NetFramework, ...), le même dll importé fonctionne très bien. Là, je reçois ExportedCommands.

Est-ce que quelqu'un a une idée, sur ce que ce comportement peut dépendre? Malheureusement, la cmdlet Import-Module n'indique pas l'échec de l'importation des cmdlets. Existe-t-il un moyen d'obtenir une indication de l'échec?

+0

Quelle version de .NET avez-vous compilée et quelle version de System.Management.Automation.dll (1.0 ou 3.0) fait-elle référence? Quelle version de PowerShell (et bitness) est la première machine à fonctionner? Votre assembly est-il compilé Any CPU? –

+0

Je n'ai pas compilé la DLL. Je l'utilise juste. Ainsi, je ne connais pas la version de .NET avec laquelle il a été compilé et la version de System.Management.Automation.dll.J'utilise 32 PowerShell 4.0 32 bits. (PSVersion 4.0, 3.0 WSManStackVersion, SerializationVersion 1.1.0.1, CLRVERSION 4.0.30319.34209, BuildVersion 6.3.9600.16406, PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}, PSRemotingProtocolVersion 2.2) –

+0

Avez-vous compris la cause racine de ce problème? J'ai un problème similaire. S'il vous plaît laissez-moi savoir si vous avez une solution/solution de contournement. Merci ! –

Répondre

-1

C'est ce qui a fonctionné pour moi.

  1. Exécutez la PowerShell avec privilèges d'administrateur.

  2. Maintenant, exécutez la commande Set-ExecutionPolicy Restricted

  3. Maintenant, essayez ce

    Import-Module -Nom YourModuleName

    Get-Command -Module YourModuleName

1

Il se peut que la Le fichier psd1 (le manifeste du module) ne contient pas les commandes.

This page has a tutorial sur la création d'un manifeste de module.

0

fonction Explicitement exportation à partir du module de Powershell a fonctionné pour moi

function New-CmdLetNameHere 
{ 
... 
} 
Export-ModuleMember -Function New-CmdLetNameHere 
0

Deux choses:

  1. Assurez-vous que vous utilisez un module fichier manifest (fichier .psd1). Plus d'informations peuvent être trouvées ici: https://technet.microsoft.com/en-us/library/dd878297(v=VS.85).aspx

  2. Plus important encore, éditez votre fichier manifeste et assurez-vous qu'il fait référence à votre module racine comme suit:

    RootModule = « nom de votre module »

Je venais juste de me battre avec ça pendant quelques heures et je n'arrivais pas à comprendre ce qui me manquait dans mes autres modules. Cela a fait l'affaire à coup sûr! À VOTRE SANTÉ.