Pendant des années, j'ai utilisé le cmd/DOS/Windows
shell et transmis des arguments de ligne de commande aux fichiers batch. Par exemple, j'ai un fichier, zuzu.bat
et ce, accès I %1
, %2
etc. Maintenant, je veux faire la même chose quand j'appelle un PowerShell
scénario when I am in a Cmd.exe shell
. J'ai un script xuxu.ps1
(et j'ai ajouté PS1 à ma variable PATHEXT et aux fichiers PS1 associés avec PowerShell). Mais quoi que je fasse, il me semble incapable d'obtenir quoi que ce soit de la $args
variable. Il a toujours la longueur 0.
Si je suis dans un PowerShell
shell, au lieu de cmd.exe
ça, ça marche (bien sûr). Mais je ne suis pas encore assez à l'aise pour vivre dans l'environnement PowerShell à plein temps. Je ne veux pas 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 ne peux pas obtenir au travail est trivial, foo.ps1:
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
Write-Host "Arg: $arg";
}
Les résultats sont toujours comme ceci:
C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>
xuxu p1 p2 p3 p4
").