Per anni ho utilizzato la cmd/DOS/Windowsshell e passato gli argomenti della riga di comando ai file batch. Ad esempio, ho un file, zuzu.bate in essa, l'accesso io %1, %2ecc Ora, voglio fare lo stesso quando io chiamo una PowerShellsceneggiatura 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 $argsvariabile. Ha sempre lunghezza 0.
Se sono in una PowerShellshell, 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").