我怎样才能写在中间的参数与PowerShell别名?

我试图设置一个Windows PowerShell别名来运行MinGW的g ++可执行文件的某些参数。 但是,这些参数需要在文件名和其他参数之后。 我不想经历试图build立一个function和所有这一切的麻烦。 有没有办法简单地说:

alias mybuild="g++ {args} -lib1 -lib2 ..." 

或类似的规定? 我不是那么熟悉PowerShell,而且我很难find一个解决scheme。 任何人?

你想要使用一个函数,而不是一个别名,如罗马提到的。 像这样的东西:

 function mybuild { g++ $args -lib1 -lib2 ... } 

为了试试这个,下面是一个简单的例子:

 PS> function docmd { cmd /c $args there } PS> docmd echo hello hello there PS> 

您可能还想将其放入configuration文件中,以便在运行PowerShell时使其可用。 您的个人资料文件的名称包含在$profile

没有这样的内置方式。 恕我直言,包装function是迄今为止最好的方式。 但是我知道有些解决方法是发明的,例如:

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

要构build一个函数,将其存储为别名,然后将所有内容保存到configuration文件中,以便以后使用:

 $g=[guid]::NewGuid(); echo "function G$g { COMMANDS }; New-Alias -Force ALIAS G$g">>$profile 

在那里你已经用你想要的别名替代ALIAS ,用命令或命令string来执行COMMANDS

当然,不要这样做,你可以(也应该)为上述做一个别名:

 echo 'function myAlias { $g=[guid]::NewGuid(); $alias = $args[0]; $commands = $args[1] echo "function G$g { $commands }; New-Alias -Force $alias G$g">>$profile }; New-Alias alias myAlias'>>$profile 

以防万一你的大脑从所有的recursion(别名别名等)中被彻底翻转,粘贴第二个代码块到你的PowerShell(并重新启动PowerShell)之后,一个简单的例子就是:

 alias myEcho 'echo $args[0]' 

或没有参数:

 alias myLs 'ls D:\MyFolder' 

如果你还没有个人资料

如果您还没有configuration文件,上述方法将失败! 在这种情况下, 从这个答案中使用New-Item -type file -path $profile -force