Durante años, he usado el cmd/DOS/Windows
shell y he pasado argumentos de línea de comandos a archivos por lotes. Por ejemplo, tengo un archivo, zuzu.bat
y en ella, el acceso I %1
, %2
, etc. Ahora, quiero hacer lo mismo cuando llamo a un PowerShell
guión when I am in a Cmd.exe shell
. Tengo un script xuxu.ps1
(y agregué PS1 a mi variable PATHEXT y archivos PS1 asociados con PowerShell). Pero no importa lo que haga, parece que no puedo obtener nada de la $args
variable. Siempre tiene una longitud de 0.
Si estoy en un PowerShell
caparazón, en lugar de cmd.exe
, funciona (por supuesto). Pero todavía no me siento lo suficientemente cómodo para vivir en el entorno de PowerShell a tiempo completo. No quiero escribir powershell.exe -command xuxu.ps1 p1 p2 p3 p4
. Quiero escribir xuxu p1 p2 p3 p4
.
¿Es posible? y si lo es, cómo?
La muestra que no puedo hacer para trabajar es trivial, foo.ps1:
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
Write-Host "Arg: $arg";
}
Los resultados siempre son así:
C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>
xuxu p1 p2 p3 p4
").