86 votes

Comment puis-je écrire un alias PowerShell avec des arguments au milieu ?

J'essaie de configurer un alias Windows PowerShell pour exécuter l'exécutable g++ de MinGW avec certains paramètres. Cependant, ces paramètres doivent venir après le nom du fichier et d'autres arguments. Je ne veux pas passer par les tracas d'essayer de mettre en place une fonction et tout ça. Existe-t-il un moyen de simplement dire quelque chose comme :

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

ou quelque chose comme ça ? Je ne suis pas si familier avec PowerShell, et j'ai du mal à trouver une solution.

135voto

Mark Points 5205

Vous voulez utiliser une fonction, pas un alias, comme Roman l'a mentionné. Quelque chose comme ça :

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

Pour essayer ceci, voici un exemple simple :

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

Vous pouvez également le mettre dans votre profil afin qu'il soit disponible chaque fois que vous utilisez PowerShell. Le nom de votre fichier de profil est contenu dans $profile.

5voto

Roman Kuzmin Points 13913

Il n'y a pas une telle façon intégrée. OMI, une fonction d'emballage est la meilleure façon d'aller jusqu'à présent. Mais je sais que des solutions de contournement ont été inventées, par exemple :

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

4voto

Josh Points 41

Il s'agit d'un exemple de fonction qui fera différentes choses en fonction de la façon dont il a été appelé :

Function Do-Something {
[CmdletBinding()] 
[Alias('DOIT')]
Param(
    [string] $option1,
    [string] $option2,
    [int] $option3)
#$MyInvocation|select *|FL
If ($MyInvocation.InvocationName -eq 'DOIT'){write-host "You told me to do it...so i did!" -ForegroundColor Yellow}
Else {Write-Host "you were boring and said do something..." -ForegroundColor Green}
}

1voto

Vopel Points 81

La création d'un « filtre » est également une option, une alternative plus légère aux fonctions. Il traite chaque élément du pipeline, lui attribuant la variable $ _ automatic. Donc, par exemple :

filter test { Write-Warning "$args $_" }
'foo','bar' | test 'This is'

renvoie :

WARNING: This is foo
WARNING: This is bar

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X