Протягом багатьох років я використовував cmd/DOS/Windows
оболонку і передавав аргументи командного рядка для пакетних файлів. Наприклад, у мене є файл, zuzu.bat
і в ньому я доступ %1
, %2
і т.д. Тепер я хочу зробити те ж саме , коли я називаю PowerShell
сценарій when I am in a Cmd.exe shell
. У мене є сценарій, 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>
xuxu p1 p2 p3 p4
").