Mettre les fonctions dans le script séparé et dot-sourcing - quel sera le champ d'action de
J'ai mis mes fonctions dans un fichier séparé et j'appelle le fichier avec:
$workingdir = Split-Path $MyInvocation.MyCommand.Path -Parent
. "$workingdir\serverscan-functions.ps1"
Mais, si j'appelle les scripts comme
my-function
comment la portée des variables (à partir de "mon")?
Dois-je encore $script:variable pour que la variable existe pas en dehors de la fonction ou ai-je point d'origine la fonction ainsi?
Espère que je ne confondez pas tout le monde avec ma question... j'ai essayé de la rendre compréhensible que possible, mais encore à apprendre tout le concept de base donc j'ai du mal à expliquer..
OriginalL'auteur Sune | 2012-02-21
Vous devez vous connecter pour publier un commentaire.
Lorsque vous dot code source, il va se comporter comme si le code était encore dans le script original. Les étendues sera le même que si c'était dans un seul fichier.
C:\functions.ps1 code:
principal.ps1 code
J'ai mis à jour ma réponse avec quelques exemples. Espérons que cela aide.
Juste ce que je cherchais!!
OriginalL'auteur Andy Arismendi
Afin d'obtenir ce que vous voulez, vous aurez probablement besoin de créer un module. Dans le module, exporter les fonctions à l'aide de
Export-ModuleMember
, et aussi longtemps que vous n'avez pas explicitement à l'exportation toutes les variables en tant que membres du module, vous devriez être bien.Une fois que vous avez créé le module, l'importer en utilisant le
Import-Module
applet de commande.OriginalL'auteur Trevor Sullivan
Mes 2cents:
Généralement (après un passé Andy Arismendi réponse! Dieu vous bénisse homme!) Je sauvegarder tous mes scripts
$pwd
dossier (ajouté dans le système d'environnement path). Ce que je peux appeler à partir de la console sans point approvisionnement et aucune variable de script empoisonnement de la console après un script se termine son travail.Si vous ne pouvez pas modifier le vôtre fonctions dans les scripts simples (ça arrive parfois), je suis d'accord avec Trevor répondre à créer un module et de l'importer dans
$profile
OriginalL'auteur CB.