Per anni ho utilizzato la shell cmd/DOS/Windows
e ho inoltrato gli argomenti della riga di comando ai file batch. Ad esempio, ho un file, zuzu.bat
e in esso, accesso a %1
, %2
, ecc. Ora, voglio fare lo stesso quando chiamo uno script PowerShell
when I am in a Cmd.exe shell
. Ho uno script, xuxu.ps1
(e ho aggiunto PS1 alla mia variabile PATHEXT e ai file PS1 associati con PowerShell). Ma non importa quello che faccio, non riesco a ottenere nulla dalla variabile $args
. Ha sempre lunghezza 0.Come passare gli argomenti della riga di comando in un file ps1 PowerShell
Se sono in una shell PowerShell
, invece di cmd.exe
, funziona (ovviamente). Ma non sono ancora abbastanza comodo per vivere a tempo pieno nell'ambiente PowerShell. Non voglio digitare powershell.exe -command xuxu.ps1 p1 p2 p3 p4
. Voglio digitare xuxu p1 p2 p3 p4
.
E 'possibile, e se sì, come?
Il campione non posso andare al lavoro è 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>
Penso che la chiave è nel vostro passo 6 in cui si passa i parametri al PowerShell .exe. Daniel dice che ha associato i file PS1 con PowerShell ma che non passa gli argomenti senza le specifiche% 1% * in più. Si noti inoltre che il parametro -File non è disponibile in V1. È nuovo per V2. –
Una buona presa riguardo al parametro -file che avevo dimenticato. – EBGreen
Dovrò installare V2 prima di poter provare il tuo suggerimento. Grazie.Quando dici che questo sta infrangendo una funzionalità di sicurezza di base, che cosa significa "questo" intendi? Chiamare uno script PowerShell da Cmd.exe come se fosse un file .com/.bat/.exe? Passando i parametri allo script? –