如何在中间编写带参数的PowerShell别名?

Ken*_*ows 67 powershell alias g++

我正在尝试设置Windows PowerShell别名以使用某些参数运行MinGW的g ++可执行文件.但是,这些参数需要在文件名和其他参数之后.我不想经历尝试设置功能和所有这些的麻烦.有没有办法简单地说:

alias mybuild="g++ {args} -lib1 -lib2 ..."
Run Code Online (Sandbox Code Playgroud)

或类似的规定?我对PowerShell并不熟悉,而且我很难找到解决方案.任何人?

Mar*_*ark 105

你想要使用函数,而不是像Roman所提到的别名.像这样的东西:

function mybuild { g++ $args -lib1 -lib2 ... }
Run Code Online (Sandbox Code Playgroud)

试试这个,这是一个简单的例子:

PS> function docmd { cmd /c $args there }
PS> docmd echo hello
hello there
PS> 
Run Code Online (Sandbox Code Playgroud)

您可能还希望将其放在您的配置文件中,以便在运行PowerShell时使其可用.您的个人资料文件的名称包含在$profile.

  • 获得更好的命令可访问性的一点改进是使用New-Alias将Alias映射到新函数.`功能SCP-Filetransfer {cmd/c pscp.exe -i~\.ssh\id_rsa.ppk $ args} New-Alias -Force pscp SCP-Filetransfer` (4认同)
  • 不利的一面是该函数没有参数完成功能 (2认同)

Rom*_*min 5

没有内置的这种方式.恕我直言,包装函数是到目前为止最好的方法.但我知道发明了一些变通方法,例如:

https://web.archive.org/web/20120213013609/http://huddledmasses.org/powershell-power-user-tips-bash-style-alias-command

  • bash别名确实与PowerShell函数或cmdlet更紧密地同义.PowerShell中的别名实际上仅用于缩短现有函数/ cmdlet - 例如Remove-Item的别名`rm`. (8认同)

Gio*_*ssi 5

几年前,我创建了一个 PowerShell 模块来执行此操作。它在画廊中并且是开源的。

我一直在寻找同样的经历。使用方法如下:

Add-Alias ls 'ls -force'
Add-Alias add 'git add'
Run Code Online (Sandbox Code Playgroud)

画廊: https://www.powershellgallery.com/packages/posh-alias/

Github: https: //github.com/giggio/posh-alias