Je suis en train de créer un framework de test pour mon équipe de développement actuelle. Une chose que je voudrais leur laisser faire est de créer un script Powershell pour exécuter leurs tests. Le système est un système de déploiement de base de données, donc pour le tester, ils devront potentiellement exécuter du code d'installation, puis le déploiement sera lancé, puis ils vont exécuter du code de vérification à la fin.Exécution d'un nom de fonction set dans plusieurs scripts Powershell
Étant donné que le déploiement prend un certain temps, j'aimerais que le framework gère une fois pour tous les tests. Ainsi, le débit de base est:
Run test #1 set-up
Run test #2 set-up
Run test #3 set-up
Run the deploy process
Run the code to confirm that test #1 passed
Run the code to confirm that test #2 passed
Run the code to confirm that test #3 passed
je me suis dit que je devais le cadre toujours appeler une fonction appelée « setup » (ou quelque chose de similaire) dans tous les scripts Powershell dans un répertoire particulier. Si aucune fonction "setup" n'existe, cela ne devrait pas être le cas. Ensuite, je voudrais exécuter le déploiement et ensuite exécuter les autres fonctions dans les scripts Powershell. Étant donné une liste de répertoires, comment puis-je faire défiler chaque script Powershell et exécuter ces fonctions?
Merci pour toute indication!
Merci. Je savais qu'il y avait une syntaxe à appeler par un nom de variable qui incluait des parenthèses, mais je ne pouvais pas le trouver n'importe où. Je vais aussi essayer certains de mes propres tests et poster ici avec des résultats. De plus, mon but était d'exécuter une fonction de configuration dans tous les scripts, mais j'ai ensuite pensé à utiliser un paramètre de commutateur "-setup" ... bien sûr cela nécessite de pouvoir passer des paramètres :) –
J'ai testé votre premier script et il vient de renvoyer la valeur de la variable chaîne (le chemin complet du script). Invoke-Command a eu quelques problèmes (il semble y avoir un bug qui nécessite l'utilisation de param "-ComputerName", mais c'est un appel distant même si sur l'ordinateur local.Je vais poster une solution. Je vous ai donné le vote. Si vous voulez que je change la réponse sélectionnée, vous pouvez changer la vôtre et je la changerai. Merci pour l'aide! –
@ Tom-H. Merci pour le vote en hausse - il est un peu tard pour moi en ce moment. Je viens de réaliser que Invoke-command utilise WinRM lorsqu'il est appelé avec le paramètre filepath local - c'était nouveau pour moi! Heureux d'avoir aidé. – Matt