Pendant des années, j'ai utilisé le cmd/DOS/Windows
et passer des arguments de ligne de commande aux fichiers batch. Par exemple, j'ai un fichier, zuzu.bat
et dans celui-ci, j'accède %1
, %2
etc. Maintenant, je veux faire la même chose lorsque j'appelle une fonction PowerShell
script when I am in a Cmd.exe shell
. J'ai un script, xuxu.ps1
(et j'ai ajouté PS1 à ma variable PATHEXT et associé les fichiers PS1 avec PowerShell). Mais quoi que je fasse, je ne parviens pas à obtenir quoi que ce soit à partir de l'application $args
variable. Elle a toujours une longueur de 0.
Si je suis dans un PowerShell
au lieu de cmd.exe
il fonctionne (bien sûr). Mais je ne suis pas encore assez à l'aise pour vivre dans l'environnement PowerShell à plein temps. Je n'ai pas envie de taper powershell.exe -command xuxu.ps1 p1 p2 p3 p4
. Je veux taper xuxu p1 p2 p3 p4
.
Est-ce possible, et si oui, comment ?
L'exemple que je n'arrive pas à faire fonctionner est trivial, foo.ps1 :
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
Write-Host "Arg: $arg";
}
Les résultats sont toujours les mêmes :
C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>