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

标签 powershell alias dotfiles

一点背景:

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

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

谢谢!!

最佳答案

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

你应该这样写:

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 - 在powershell中将参数传递给Set-Alias的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2677528/

相关文章:

powershell - 在 AD 计算机对象上设置 ACL

在命令行中按下 Up 的 Bash 别名

macos - 添加终端以使用外语 macOS 默认写入来对接持久应用程序

PowerShell 的解析模式 : argument (command) mode vs. 表达模式

powershell - 使用 Powershell 执行带参数的 exe

sql - Delete From 语句中带有别名的表变量

bash - 为 cd - 命令创建一个 bash 别名

windows - 如何使用 Windows PowerShell 显示隐藏文件(点文件)

Bash 别名和点文件

powershell - 我的切换功能出了什么问题