In bash, habe ich eine Reihe von Aliasnamen, die Parameter für die bestehenden Programme/Funktionen hinzufügen, zum Beispiel:Verwenden Sie die Parameterdefinition eines anderen Cmdlet in Powershell?
alias grep='grep --color'
Ich weiß, das ist nicht die beste Analogie, aber gibt es eine einfache Möglichkeit, dass in Powershell zu tun? Es scheint wie Set-Alias lässt Sie Parameter nicht angeben.
Sie können einen Alias für ein Cmdlet erstellen, aber Sie können nicht einen Alias für einen Befehl erstellen, die eines Cmdlets und seine Parameter besteht.
Sie schlagen vor, eine neue Cmdlets zu schaffen, dies zu tun, aber ich würde es vorziehen, der Lage sein, zusätzliche Parameter zu übergeben, ohne alle erlaubt params im neuen Cmdlets zu codieren, die (wie New-Proxycommand Sie zu benötigen scheint machen). Auf diese Weise muss ich nicht wissen, wann die Cmdlet-Parameter "proxied/aliased" geändert und in meinem Proxy-Cmdlet geändert werden. So
was ist die beste Lösung für
- nicht statisch die Parameterdefinition für die aliased/proxied Cmdlets duplizieren. Lassen Sie das ursprüngliche Cmdlet die Validierung durchführen oder verweisen Sie dynamisch darauf.
- ein Alias / anders genannt Cmdlets verwenden, so dass Sie etwas explizit zu bekommen, das unterschiedliche Verhalten
- die Alias / neue Cmdlets Pass Werte zu tun haben, müssen vorhandene Parameter in dem aliased/proxied Cmdlets
Closest I kann sich vorstellen, ist etwas wie das unten, obwohl Syntax wahrscheinlich falsch ist. Auch scheint es mit Piping nicht am nettesten zu spielen, aber das kann wohl irgendwie umgangen werden.
& $proxiedcommand $additionaldefaultparams $rawparamsfromread-host
Oder gibt es eine Möglichkeit, die Dinge für proxy cmdlets zu verwenden, um dynamisch wie unter Parameter zu instanziiert?
function aliased-cmdlet
{
[CmdletBinding((Get-Command Original-Cmdlet)._cmdletBindingsettings_)]
Param(
(Get-Command Original-Cmdlet)._paramsettings_)
)
Original-Cmdlet -CustomDefault Value -Whatever Else
}
Dies [Beispiel von Jeff Hicks] (https://mcpmag.com/articles/2013/11/05/blacksmith-part-7.aspx) oder diese [Walkthrough von Don Jones] (http://windowsitpro.com/blog/powershell-proxy-functions) von Proxy-Funktionen könnte helfen – BenH
Sie könnten in Erwägung ziehen, ein Scriptlet (Skriptfunktion) zu schreiben, das '$ myinvocation', speziell' $ myinvocation.line', verwendet und es nach beliebigen Parametern parsiert wurden geliefert, die Sie ändern oder überschreiben müssen. Siehe beispielsweise [diese MSDN-Seite unter "Alle Parameter abrufen"] (https://blogs.msdn.microsoft.com/powershell/2007/05/31/bekommen-all-your-parameters /) –
@BenH, habe ich meine Frage ein wenig aktualisiert. Ich denke, dass der Proxy-Befehl nahe kommt, aber nicht behandelt, dass die Parameter alt werden. Es scheint, als wäre die Lösung, mehr Meta zu bekommen und die Proxy-Cmdlet-Generierung dynamisch durchzuführen. Scheint ein wenig überentwickelt und zerbrechlich für das, was ich fühle, sollte eine einfache Lösung sein. – undefinedvariable