Как правильно передать параметр в Set-Alias ​​в powershell? - PullRequest
4 голосов
/ 20 апреля 2010

Немного фона:

Я использую PowerShell на Windows XP на работе, и я установил кучу полезных ярлыков в Microsoft.PowerShell_profile.ps1 в My Documents, пытаясь эмулировать среду Mac вдохновленный ярлыками Райана Бейтса

У меня есть такие вещи, как:

Set-Alias rsc Rails-Console
function Rails-Console {Invoke-Expression "ruby script/console"}

Что прекрасно работает, когда в командной строке я говорю:

rsc #it calls the proper command

Однако это не работает должным образом

Set-Alias rsg Rails-Generate
function Rails-Generate {Invoke-Expression "ruby script/generate"}

Итак, когда я делаю:

rsg model User

который должен звонить

ruby script/generate model User

все, что он вызывает, это

ruby script/generate  #Dumping  my params

Так как мне правильно изменить мои функции, чтобы они передавали параметры, отправляемые в функции?

Спасибо !!

1 Ответ

8 голосов
/ 20 апреля 2010

Ваша функция не принимает никаких аргументов, поэтому неудивительно, что ни один из них не передается.

Вы должны написать это так:

function Rails-Generate { ruby script/generate $args }

Обратите внимание, что Invoke-Expression здесь не требуется. PowerShell - это оболочка - без проблем можно вызывать другие программы напрямую.

Демо-версия:

PS Home:\> Set-Alias foo Call-Foo
PS Home:\> function Call-Foo { args }
PS Home:\> foo bar baz
argv[0] = Somewhere\args.exe

PS Home:\> function Call-Foo { args $args }
PS Home:\> foo bar baz
argv[0] = Somewhere\args.exe
argv[1] = bar
argv[2] = baz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...