Comment passer des arguments de ligne de commande à un PowerShell ps1 fichier

Pendant des années, j'ai utilisé le cmd/DOS/Windows shell et passé arguments de ligne de commande pour les fichiers de commandes. Par exemple, j'ai un fichier, zuzu.bat et pour cela, j'ai accès %1, %2, etc. Maintenant, je veux faire la même chose quand je l'appelle un PowerShell script when I am in a Cmd.exe shell. J'ai un script, xuxu.ps1 (et j'ai ajouté PS1 à mon PATHEXT variable et associés fichiers PS1 avec PowerShell). Mais peu importe ce que je fais, il me semble impossible d'obtenir quelque chose de la $args variable. Il a toujours une longueur de 0.

Si je suis dans un PowerShell shell, 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 à temps plein. Je ne veux pas de type powershell.exe -command xuxu.ps1 p1 p2 p3 p4. J'ai envie de taper xuxu p1 p2 p3 p4.

Est-ce possible, et si oui, comment?

L'exemple je ne peut pas se rendre 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 ça:

C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>