Per anni ho utilizzato la cmd/DOS/Windows
shell e passato gli argomenti della riga di comando ai file batch. Ad esempio, ho un file, zuzu.bat
e in essa, l'accesso io %1
, %2
ecc Ora, voglio fare lo stesso quando io chiamo una PowerShell
sceneggiatura when I am in a Cmd.exe shell
. Ho uno script xuxu.ps1
(e ho aggiunto PS1 alla mia variabile PATHEXT e file PS1 associati con PowerShell). Ma non importa quello che faccio, non riesco a ottenere nulla dalla $args
variabile. Ha sempre lunghezza 0.
Se sono in una PowerShell
shell, invece di cmd.exe
, funziona (ovviamente). Ma non sono ancora abbastanza a mio agio per vivere a tempo pieno nell'ambiente PowerShell. Non voglio scrivere powershell.exe -command xuxu.ps1 p1 p2 p3 p4
. Voglio scrivere xuxu p1 p2 p3 p4
.
È possibile e, se sì, come?
L'esempio che non riesco a far funzionare è banale, foo.ps1:
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
Write-Host "Arg: $arg";
}
I risultati sono sempre così:
C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>
xuxu p1 p2 p3 p4
").