В течение многих лет я использовал 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
»).