一点背景:
我在windows xp上使用PowerShell工作,我在Microsoft.PowerShell_profile.ps1
My Documents
中设置了一堆有用的快捷方式,尝试模拟Mac环境
灵感来自Ryan Bates's shortcuts
我有类似的事情:
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
那么我如何正确修改我的函数以获取我发送给函数的参数?
谢谢!
答案 0 :(得分:7)
你的函数没有任何参数,因此没有任何参数通过并不是非常令人惊讶。
你应该这样写:
function Rails-Generate { ruby script/generate $args }
请注意,此处不需要Invoke-Expression
。 PowerShell是 shell - 直接调用其他程序没有问题。
演示:
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