J'ai écrit un script PowerShell qui est une fonction complète des paramètres de la fonction (E.G. nom de fonction (param) {}) et ci-dessous est un appel à la fonction, avec le paramètre. P>
Je veux pouvoir appeler cette fonction dans son fichier .ps1, en passant dans le paramètre. Comment puis-je pouvoir emballer un appel à la fonction via un fichier .bat ou .cmd? J'utilise PowerShell v2.0. P>
3 Réponses :
Je pense que tout ce que vous avez à faire est de nommer les paramètres de l'appel au script comme suit: param1 et param2 sont des noms de paramètres réels dans la signature de fonction. P > profiter! p> p>
Comment puis-je appeler la fonction réelle? Cela appelle-t-il ma fonction? Et si j'ai> 1 fonction dans le même fichier .PS1 avec la signature en termes de paramètres?
Vous devez utiliser un "point-approvisionnement" du script et la commande avec plus d'une instruction: DOT-Sourcing du script + appel de la fonction avec des paramètres.
Le script de test test-fonction.PS1 : p> le fichier .bat appelant: p> notes: ce n'est pas une exigence mais je vous recommanderais de joindre le Texte de commande entière avec des guillemets doubles s'échappant, si nécessaire, des guillemets internes à l'aide de règles d'échappement CMD. P> P>
Cela a fonctionné bien. Il suffit de vouloir envelopper le chemin du fichier PS avec ' code> de sorte que les espaces dans le chemin ne l'empêchent pas de travailler. Donc powershell.exe ". 'C: \ chemin à \ test-test.ps1'; test-me -param1 'bonjour monde' -param2 12345" code>
Appeler une fonction PowerShell à partir de cmd ou de lot avec des arguments, vous devez utiliser le paramètre ROMANS Réponse fonctionnera avec PowerShell 5.1 Par exemple, mais échouera pour PowerShell 7.1. P> Devis d'un problème que j'ai laissé sur GitHub sur la raison pour laquelle le même commandement n'a pas fonctionné est: P> afin de prendre en charge les lignes UNIX Shebang, CLI de PWSH est désormais par défaut sur le paramètre -FILE (qui n'attend que un chemin de fichier de script), alors que PowerShell.exe par défaut de -Command / -C.
Pour que vos commandes fonctionnent avec pwsh, vous devez utiliser -Command / -C explicitement. P>
blockQuote> Donc, si vous avez un fichier PowerShell et le fichier de lot sera alors: < / p> Les citations autour de La même chose vaut pour Voici le problème GITUB I Publié complet: p> -Command code> ou son alias -c code>.
test.ps1 code> avec: p> ... pathto \ test.ps1 code> sont indispensables si votre .ps1 code> contient des espaces. < / p> ... pathto \ pwsh.exe code> p>