我怎样才能写在中间的参数与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是迄今为止最好的方式。 但是我知道有些解决方法是发明的,例如:
要构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
。