
Ich habe in Powershell eine dynamische Funktion wie folgt definiert:
> function test { dir -r -fil *.vbproj | ft directory, name }
Dann kann ich test
die Funktion einfach eingeben und ausführen, sie an andere Befehle weiterleiten usw. Ziemlich praktisch.
Gibt es eine Möglichkeit, die Definition des Befehls abzurufen? Kann ich den Code für meine Funktion ausgeben test
? (Ohne in meinem Verlauf dorthin zurückkehren zu müssen, wo ich ihn definiert habe?)
Antwort1
Für eine Funktion namens test
:
$function:test
Oder wenn der Funktionsname einen Bindestrich enthält (zB. test-function
):
${function:test-function}
Alternative:
(Get-Command test).Definition
Antwort2
(Get-Command Test).Definition
So erhalte ich normalerweise Definitionen.
Antwort3
Beide Ansätze ${function:myFn}
funktionieren (Get-Command myFn).Definition
nur für lokal erstellte Funktionen.
Sie können auch die Definition von nativen Funktionen wie Get-EventLog
(zB) sehen mit demCommandMetadata
UndProxyCommand
Befehle imSystem.Management.Automation
Namespace wie folgt:
using namespace System.Management.Automation
$cmd = Get-Command Get-EventLog
$meta = New-Object CommandMetadata($cmd)
$src = [ProxyCommand]::Create($meta)
$src | Write-Output
Siehe auch:Können wir den Quellcode für PowerShell-Cmdlets sehen?