2017-01-30 1 views
0

Donc le titre le rend plus ou moins clair mais je demanderai quand même plus de précision. La question est donc de savoir s'il est possible d'exporter des fonctions auxiliaires à partir d'un module et de les rendre uniquement réutilisables dans le code, mais limitées à l'utilisateur pour qu'il ne puisse pas les appeler depuis la console?Masquer les fonctions PowerShell exportées de l'utilisateur

Merci d'avance!

+0

Quand vous dites disponible pour réutiliser dans le code, faites-vous référence au code dans le module, un script externe au module, un module séparé? –

+0

Je dois utiliser certaines fonctions dans des modules séparés, sans mettre ces fonctions à la disposition de la console utilisateur – SokIsKedu

Répondre

0

Bien sûr, vous devez spécifier exactement ce que vous exportez comme si (dans le fichier psm):

Export-ModuleMember -Function Verb-Noun 

Ce exporteraient que celui-fonction et dans votre fichier psd:

FunctionsToExport = 'Verb-Noun' 
+0

Je l'ai maintenant, mais cela rend les fonctions disponibles non seulement pour le module séparé mais aussi pour l'utilisateur depuis la console – SokIsKedu

+0

désolé, je ne comprends pas ce que vous dites, pouvez-vous reformuler? Pour moi cela fonctionne comme prévu: 'Get-Command -Module mymodule' renvoie seulement 1 commande. Ajouter des exemples? @SokIsKedu – 4c74356b41

+0

Lire le commentaire sur la question elle-même, il a besoin des méthodes pour être disponible pour les autres modules, mais pas à la disposition de l'utilisateur. –

0

Je ne pense pas que ce soit possible comme vous le voulez. Comment je voudrais le gérer est d'avoir un fichier PS1 dans le module d'aide qui contient toutes les commandes cachées, mais pas le charger dans le cadre du module d'aide. Ensuite, dans les modules qui en dépendent, il suffit de doter le fichier d'aide PS1 et il importera tous les scripts qu'il utilisera.

Par exemple, dans le module nécessitant le module auxiliaire:

. $PSScriptRoot\..\HelperModule\HelperModuleInternal.ps1 

évidemment remplacer HelperModule et HelperModuleInternal avec le nom du module auxiliaire et les commandes cachées fichier PS1 respectivement. Notez que si vous en faites un fichier psm1 cela ouvrira simplement l'ISE.

Je ne suis pas sûr, mais il pourrait encore essayer d'exporter les commandes cachées, si c'est le cas, j'ai lu une astuce à traiter. Appelez toutes vos commandes publiées la syntaxe habituelle Verb-Noun, et à la fin mettez Export-ModuleMember -Function "*-*". Ensuite, pour vos commandes internes, utilisez un nom qui ne correspond pas à cela, par exemple Verb_Noun ou VerbNoun. Très ordonné.