[Powershell] recuperer un argument

recuperer un argument [Powershell] - Divers - Programmation

Marsh Posté le 04-06-2017 à 10:36:10    

Bonjour
 
Je debut en powershell et j'ai un soucis
 
Je suis en train d’écrire un script, ou je passe nécessairement un paramètre en argument du script directement dans la ligne de commande
mon problème, je n'arrive pas a récupérer mon argument dans mon script
 
Exemple, je lance mon script comme ceci : ./test.ps1 -param toto
 
j'ai essayer dans mon script de faire un write-host $toto, ca marche pas
j'ai cherché un peu, beaucoup font un  
param ( [String]$toto)
 
mais chez moi il me dit que param n'est pas une fonction reconnue :(
 
Autant en KSH ou Bash j'ai aucun soucis, autant la je galère pour un truc tout con comme ca :(


---------------
Serveur HFR - OpenTTD
Reply

Marsh Posté le 04-06-2017 à 10:36:10   

Reply

Marsh Posté le 06-06-2017 à 12:03:27    

Je ne connais pas powershell, donc j'ai cherché et trouvé cette page :
https://technet.microsoft.com/fr-fr [...] 54301.aspx
 
Entre la doc et ton code je vois 2 points à regarder :
 - la définition du bloc Param (note le 'P' majuscule)
 - le nom du paramètre que tu définis est toto donc ta ligne de commande doit plutôt être : ./test.ps1 -toto valeurDuParametre
 

Reply

Marsh Posté le 13-06-2017 à 17:24:03    

J'ai essayer, rien a faire
 

Code :
  1. Param ( [String]$toto )
  2. write-host "Test : $toto"
  3. write-host "Fin"


 
et l'execution

Code :
  1. D:\Test>powershell D:\Test\test.ps1 -toto coucou
  2. Param : Le terme «Param» n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou programme
  3. exécutable. Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès est correct
  4. et réessayez.
  5. Au caractère D:\Test\test.ps1:8 : 1
  6. + Param ( [String]$toto )
  7. + ~~~~~
  8.     + CategoryInfo          : ObjectNotFound: (Param:String) [], CommandNotFoundException
  9.     + FullyQualifiedErrorId : CommandNotFoundException
  10. Test :
  11. Fin


---------------
Serveur HFR - OpenTTD
Reply

Marsh Posté le 14-06-2017 à 16:08:11    

Salut,
ton problème est "rigolot" tu dois avoir un PB d'installation de Powershell.
Car la bonne syntax est:

Code :
  1. param ([string]$toto)
  2. write-host "param: $toto"


Ni plus ni moins.
 
Il te reste la variable par défault des arguments: $args[]

Code :
  1. write-host $args[0]
  2. write-host $args[1]


 
Donne:

Code :
  1. PS C:\temp> ./test.ps1 coucou hello
  2. coucou
  3. hello


 


---------------
mais il y a pas des cite pour d/l psq je conner un pote i va sur cite | Molière nous pardonne...
Reply

Marsh Posté le 16-06-2017 à 16:49:50    

avec $args ca marche en effet, mais le Param, rien a faire
 
c'est Powershell fourni par defaut avec windows10, je n'ai fait aucune installation particulière, peut etre manque t'il un module complémentaire pour le Param ?


---------------
Serveur HFR - OpenTTD
Reply

Marsh Posté le 16-06-2017 à 23:15:59    

param ne nécessite aucun module particulier, c'est un mot clé intrinsèque à powershell.
 
Essai de mettre à jour ton Framework .NET
 
Car si param ne fonctionne pas, tu n'iras pas très loin en powershell.


---------------
mais il y a pas des cite pour d/l psq je conner un pote i va sur cite | Molière nous pardonne...
Reply

Marsh Posté le 17-06-2017 à 14:19:52    

Je viens de faire copier coller de ton "script" et ça marche très bien:

PS C:\> C:\Users\JB\Desktop\test.ps1 -toto "test
Test : test
Fin

Reply

Marsh Posté le 20-06-2017 à 14:36:29    

bah moi ca veut pas :(


---------------
Serveur HFR - OpenTTD
Reply

Marsh Posté le 22-06-2017 à 07:57:25    

je vient de decouvrir un truc
 
en commencant tout de suite la 1ere ligne par Param, ca a l'air de marcher
 
en 1ere ligne du mon script j'avais un commentaire, mais en mettant Param, ca marche
 
petite subtilité que je n'avais pas donc.


---------------
Serveur HFR - OpenTTD
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed