Powershell fonction d'appel à partir de l'intérieur d'une fonction
J'espère que quelqu'un pourra m'aider ici, je suis simplement en train d'essayer d'appeler une fonction dans une fonction.
J'ai créé un menu simple qui demande la saisie de l'utilisateur et basée sur l'option de menu sélectionnée, il exécute ensuite une autre fonction qui a une sélection qui appelle d'autres fonctions selon l'origine menucode sélectionné.
En bref je voudrais passer les objets personnalisés à partir de chaque fonction à l'autre sans revenir au script principal menu de la boucle. J'ai googlé et n'arrive pas à trouver une réponse claire et/ou exemple de code expliquant comment faire.
Après Jaitsu commentaire ci-dessous, j'ai supprimé une bonne partie de mon code et ont collé le script, de sorte que vous pouvez voir clairement mon problème de première main.
Jaitus mentionné l'utilisation d'un écho qui est vraiment juste un alias pour l'écriture de sortie. Je voudrais utiliser les propriétés de sortie dans d'autres fonctions sans avoir à retourner au script principal de la boucle. Est-ce même possible de faire ou dois-je quitter la fonction pour créer une variable qui est ensuite utilisé pour passer à la fonction suivante bloc de script ?
Exemple, la Fonction renvoie un objet mais le script ne quitte jamais une fonction avant d'appeler le prochain qui ressemble à un retour de la première bloc de script.
Code et les commentaires attachés à illustrer mon dilemme, même pas sûr que c'est possible de le faire et si non, alors d'autres suggestions pour la façon de faire mon menu de la boucle serait grandement apprécié.
* fixation de code, et de nouveau à part une fois rempli *
Merci à tous pour vos commentaires...
Vous devez vous connecter pour publier un commentaire.
Si vous voulez à la sortie de plusieurs variables à partir de la fonction (si c'est ce que vous voulez), vous pouvez utiliser plusieurs approches:
Étendues
Vous pouvez attribuer des variables à l'extérieur de la portée directement à partir de la fonction:
Vous pouvez trouver plus d'informations sur les étendues dans about_Scopes article ou dans mon post.
Pipeline
Si vous revenir plus d'un objet, comme:
ils seront retournés sous forme de tableau, et vous pouvez le diriger dans la manière ordinaire:
S'il vous plaît, soyez conscient du potentiel problèmes.
Complexes résultat
Vous pouvez aussi construire des objets complexes, comme SpellingD écrire, et de le retourner. Mais je préfère de table de hachage au lieu de PSObject, si il n'est pas nécessaire de méthodes liées à cet objet:
Votre question est un peu difficile pour moi de les interpréter, mais cela ressemble à votre question principale
En Powershell, les variables créées dans les fonctions de rester dans ces fonctions, par la suite, les variables d'aller avec eux. Donc si vous êtes à la création d'un objet que vous souhaitez passer, vous avez besoin d'avoir le résultat de la fonction de l'objet et de l'utilisation d'un appel à cette fonction comme une affectation à une variable. Il semble que vous faites l'objet en tant que $variable utilisateur au sein de votre script. Donc, si vous souhaitez passer cet objet, vous voulez faire quelque chose de similaire à la suivante
Ce jeux de $monobjet à l'objet que vous avez créé comme $utilisateur (car faisant écho à $utilisateur à la fin de cette fonction sert comme d'un "retour" de la valeur, façon de parler), de sorte que vous pouvez ensuite passer $monobjet à d'autres fonctions, et l'appel de $monobjet.la propriété serait égale à la valeur qui a été définie lors de la création de l'objet.
Remarque:
Ce sera juste effacer tout le travail que vous avez fait précédemment dans la création de $utilisateur comme un nouvel objet
$nom d'utilisateur que vous avez défini comme une chaîne de caractères, afin de ne pas avoir la propriété personnalisée "emailname" parce qu'il a été créé en $de l'utilisateur. Donc, dans cette fonction, $utilisateur.emailname serait de retour que vous avez ajouté à la somme de l'utilisateur de l'objet en tant que propriété "emailname"
Espère que cette aide.
main_input $menucode $user
$utilisateur doit être défini comme un objet, et dans votre script, $nom d'utilisateur que vous avez créé comme une corde, jusqu'à ce que vous le réaffecter à un objet, $nom d'utilisateur n'aura pas de propriétés personnalisées, seulement ceux par défaut comme .longueur