【问题标题】:What is a proper way to pass a parameter to Set-Alias in powershell?在powershell中将参数传递给Set-Alias的正确方法是什么?
【发布时间】:2010-04-20 18:08:51
【问题描述】:

一点背景:

我在工作时在 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

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

谢谢!!

【问题讨论】:

    标签: powershell alias dotfiles


    【解决方案1】:

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

    你应该这样写:

    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
    

    【讨论】:

    • 约翰内斯 - 谢谢!我是 powershell 的新手 - 所以我不知道如何传递参数,它与 bash 的工作方式不同。谢谢!
    • 他必须考虑 Invoke-Expression 或其他方法来避免使用某些特殊字符的参数。 : 或 -- 之类的东西可能会开始弄乱 powershell 解析你的完整命令行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多