Przez lata używałem cmd/DOS/Windowspowłoki i przekazywałem argumenty wiersza poleceń do plików wsadowych. Na przykład, mam pliku, zuzu.bataw nim, mam dostęp %1, %2itp Teraz chcę zrobić to samo, gdy nazywam PowerShellskrypt when I am in a Cmd.exe shell. Mam skrypt xuxu.ps1(i dodałem PS1 do mojej zmiennej PATHEXT i powiązanych plików PS1 z PowerShell). Ale bez względu na to, co robię, wydaje mi się, że nie mogę nic uzyskać ze $argszmiennej. Ma zawsze długość 0.
Jeśli jestem w PowerShellpowłoce, zamiast cmd.exetego działa (oczywiście). Ale nie czuję się jeszcze wystarczająco komfortowo, aby żyć w środowisku PowerShell w pełnym wymiarze godzin. Nie chcę pisać powershell.exe -command xuxu.ps1 p1 p2 p3 p4. Chcę pisać xuxu p1 p2 p3 p4.
Czy to możliwe, a jeśli tak, to w jaki sposób?
Przykład, którego nie mogę uruchomić, jest trywialny, foo.ps1:
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
Write-Host "Arg: $arg";
}
Wyniki są zawsze takie:
C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>
xuxu p1 p2 p3 p4”).