Wie kann ich schreiben Sie eine PowerShell-alias mit Argumenten in der Mitte?
Ich versuche zum einrichten einer Windows PowerShell-alias ausführen MinGW-g++ executable mit bestimmten Parametern. Jedoch, diese Parameter kommen müssen, nach dem Dateinamen und anderen Argumenten. Ich will nicht gehen durch den Aufwand zu versuchen, die set-up-Funktion und all das. Gibt es eine Möglichkeit, einfach etwas sagen wie:
alias mybuild="g++ {args} -lib1 -lib2 ..."
oder etwas entlang jenen Linien? Ich bin noch nicht so vertraut ist mit PowerShell, und ich bin eine schwierige Zeit der Suche nach einer Lösung. Wer?
InformationsquelleAutor Ken Bellows | 2010-11-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Sie verwenden möchten, eine Funktion, nicht ein alias, wie Roman erwähnt. So etwas wie dieses:
Um dies auszuprobieren, hier ein einfaches Beispiel:
Vielleicht wollen Sie auch dies in dein Profil, damit es immer verfügbar ist, wenn Sie ausführen von PowerShell. Der name Ihr Profil-Datei enthalten ist, in
$profile
.Function SCP-Filetransfer { cmd /c pscp.exe -i ~\.ssh\id_rsa.ppk $args } New-Alias -Force pscp SCP-Filetransfer
Der Nachteil dieser Lösung ist kein parameter Fertigstellung ist auf die Funktion
InformationsquelleAutor Mark
Es ist nicht so gebaut-in. IMHO, eine wrapper-Funktion ist der beste Weg, so weit zu gehen. Aber ich weiß, dass einige workarounds erfunden wurden, zum Beispiel:
https://web.archive.org/web/20120213013609/http://huddledmasses.org/powershell-power-user-tips-bash-style-alias-command
rm
für Remove-Item.InformationsquelleAutor Roman Kuzmin
Dies ist eine Beispiel-Funktion, die verschiedene Dinge tun, basierend auf, wie es genannt wurde:
InformationsquelleAutor Josh
Bauen Sie eine Funktion speichern, speichern Sie Sie als alias, und speichern Sie das ganze in Ihr Profil für die spätere Verwendung:
wo Sie ersetzt haben
ALIAS
mit dem alias, den Sie möchten, und dieCOMMANDS
mit dem Befehl oder eine Reihe von Befehlen ausführen.Natürlich, anstatt das zu tun, dass Sie können (und sollten!) machen Sie einen alias für die oben:
Nur für den Fall Ihr Gehirn bekam innen nach außen gedreht, von allen die Rekursion (alias Aliase, etc.), nach dem einfügen der zweiten code-block, um Ihre PowerShell (und neu PowerShell), ein einfaches Beispiel der Verwendung ist es:
oder ohne Argumente:
Wennn Sie nicht über ein Profil noch
Die oben beschriebene Methode schlägt fehl, wenn Sie nicht über ein Profil noch!
Verwenden Sie In diesem Fall
New-Item -type file -path $profile -force
aus dieser Antwort.ps | grep
wogrep
ist ein alias, das funktioniert gut. Wogrep
ist eine Funktion, die oben hängt auf unbestimmte Zeit. Gibt es eine Abhilfe für dieses?Ich bin nicht in der Lage zu duplizieren Problem, aber meine Funktionen wurden entwickelt, um verwendet werden, mit Argumenten, nicht-pipelines.
>>
erstellt eine Datei on demand, daher gibt es glücklicherweise keine Notwendigkeit für zusätzliche Logik, um den Fall behandeln, wo der$PROFILE
noch nicht vorhanden.Ich mag die Grundidee, die Ihren Ansatz, aber die Umsetzung ist unnötig Komplex: es gibt keine Notwendigkeit, erstellen Sie ein PowerShell-alias an alle, die über einen aux-Eingang. Funktion-nur eine Funktion definieren, die direkt, mit dem gewünschten "alias" - Namen.
nicht, dass das, was ehiller Beschwerde wurde über oben?
InformationsquelleAutor NH.