Durante años, he usado el cmd/DOS/Windowsshell y he pasado argumentos de línea de comandos a archivos por lotes. Por ejemplo, tengo un archivo, zuzu.baty en ella, el acceso I %1, %2, etc. Ahora, quiero hacer lo mismo cuando llamo a un PowerShellguió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 $argsvariable. Siempre tiene una longitud de 0.
Si estoy en un PowerShellcaparazó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").