繁体   English   中英

在powershell中将参数传递给Set-Alias的正确方法是什么?

[英]What is a proper way to pass a parameter to Set-Alias in powershell?

一点背景:

我在windows xp上使用PowerShell工作,我在My Documents中的Microsoft.PowerShell_profile.ps1中设置了一堆有用的快捷方式,试图模仿受Ryan Bates的快捷方式启发的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

那么我如何正确地修改我的函数以获取我发送给函数的参数?

谢谢!!

你的函数没有任何参数,因此没有任何参数通过也就不足为奇了。

你应该像这样写:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM