В течение многих лет я использовал оболочку cmd/DOS/Windows
и передал аргументы командной строки пакетным файлам. Например, у меня есть файл zuzu.bat
, и в нем я получаю доступ к %1
, %2
и т.д. Теперь я хочу сделать то же самое, когда я вызываю PowerShell
script when I am in a Cmd.exe shell
. У меня есть script, xuxu.ps1
(и я добавил PS1 в свою переменную PATHEXT и связанные с ней файлы PS1 с помощью PowerShell). Но независимо от того, что я делаю, мне кажется, что я ничего не могу получить от переменной $args
. Он всегда имеет длину 0.
Если я в оболочке PowerShell
вместо cmd.exe
, он работает (конечно). Но мне еще не достаточно комфортно жить в среде PowerShell полный рабочий день. Я не хочу набирать powershell.exe -command xuxu.ps1 p1 p2 p3 p4
. Я хочу ввести xuxu p1 p2 p3 p4
.
Возможно ли это, и если да, то как?
Образец, с которым я не могу работать, тривиален, foo.ps1:
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
Write-Host "Arg: $arg";
}
Результаты всегда будут такими:
C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>