Протягом багатьох років я використовував 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").