Comment faire pour importer personnalisé module PowerShell dans la session à distance?

Je suis en développement personnalisé module PowerShell, que je voudrais utiliser dans le contexte d'une session à distance sur un autre ordinateur. Le code suivant (qui, évidemment, ne fonctionne pas) explique ce que je suis en train de réaliser:

import-module .\MyCustomModule.psm1
$session = new-pssession -computerName server01
invoke-command -session $session -scriptblock { 
  <# use function defined in MyCustomModule here #> 
}

La première question est de savoir si il est possible de tout pour arriver à ce scénario? Je veux dire, je voudrais seulement mon module personnalisé à être physiquement présent sur ma machine, pas sur le serveur distant.

J'ai trouvé ce fil, mais je n'ai pas gérer à travail - il ne permet pas la création d'une session à distance de la machine en arrière au niveau local. Sans doute, je pose la configuration des limites mentionné quelque part dans les commentaires de ce thread... d'Ailleurs, l'auteur a mentionné les conséquences de performance qui est critique pour ma solution...

Si c'est possible, alors comment?

La version de PowerShell est actuellement pas une contrainte si la solution n'est disponible que dans PS 3.0 - je peux vivre avec cela.

  • Doublon avec stackoverflow.com/questions/2830827/... ?
  • Je ne crois pas que cela est pris en charge à droite de la boîte. Vous devez utiliser un hack comme ils ont essayé. Puis-je vous demander pourquoi vous ne pouvez pas il suffit d'installer le module sur l'ordinateur distant? C'est la solution intelligente.
  • eh bien, oui, il est assez proche. Cependant, je n'ai pas réussi à faire la solution il y a le travail, et je suis le référencement de ce thread explicitement pour indiquer que j'ai essayé l'option, et en demandant des solutions de rechange 🙂
  • l'idée était d'utiliser toutes les machines disponibles pour effectuer certains scénarios de déploiement, sans que rien ne doit être installé sur une machine distante. Mais si le scénario n'est pas pris en charge, nous aurons à vivre avec cette...
  • Pourquoi ne pas placer le module dans un lieu public, démarrez votre scriptblock avec Import-Module \\fileserver\folders\modulefolder ? Assurez-vous qu'il est signé numériquement ou utiliser quelque chose comme Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process avant de les importer pour ignorer les avertissements?
  • Est-il vraiment besoin d'être un module? Je suis tout à fait pour les modules mais Invoke-Command -FilePath transporter un seul fichier de script à la machine distante pour l'exécution. Bien sûr, si le fichier de script tente de point source ou appeler d'autres fichiers de script, ils doivent être sur la machine distante parce que Invoke-Command de ne pas les copier, il y a automatiquement.
  • hmm, oui... je veux dire, non... 🙂 Vous avez foiré mon PowerShell univers avant qu'il a commencé à devenir mature! Il n'a pas à être un module à moins que nous parlons de l'évolutivité et bien structuré, modulaire et facile à réutiliser le code. Mais je comprends votre point, et je pèse le pour et le contre dans mon cas particulier. En fait, je suis en train de (premier prototypage, à l'époque) la création d'une infrastructure de déploiement de notre application, et une séparation des fonctions de l'utilitaire et les applets de commande dans des modules semblait la voie à suivre pour moi. Comment voulez-vous aborder la tâche? Est-il fiable pour exiger des pré-requis sur une cible?
  • Au risque de jouer avec votre PowerShell univers un peu plus, est-il une raison fonctions ne peuvent pas être évolutif, bien structuré, modulaire et facile à réutiliser sans être mis dans un module?
  • Ils peuvent! Merci pour le commentaire, @mjolinor - en fait, j'ai essayé les deux variantes et ils ont tous deux le droit de vivre. J'ai choisi les modules, après un peu de discussion avec les développeurs. Je vais essayer de résumer ça dans ma réponse ci-dessous