5

少し背景:

Microsoft.PowerShell_profile.ps1私は職場で Windows XP で PowerShell を使用しており、 Ryan Bates のショートカット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

では、関数に送信するパラメーターを受け取るように関数を適切に変更するにはどうすればよいでしょうか?

ありがとうございました!!

4

1 に答える 1

11

あなたの関数は引数を取らないので、何も渡されないことは驚くべきことではありません。

次のように書く必要があります。

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
于 2010-04-20T18:35:00.567 に答える