
次のように、PowerShell で動的関数を定義しました。
> function test { dir -r -fil *.vbproj | ft directory, name }
test
その後、その関数を入力して実行し、それを他のコマンドなどにパイプすることができます。非常に便利です。
コマンドの定義を取得する方法はありますか? 関数のコードをエコー出力できますかtest
? (定義した場所まで履歴を遡る必要はありませんか?)
答え1
関数 の場合test
:
$function:test
または、関数名にハイフンが含まれている場合(例test-function
:):
${function:test-function}
あるいは:
(Get-Command test).Definition
答え2
(Get-Command Test).Definition
それが私が通常定義を得る方法です。
答え3
これらの両方のアプローチは、${function:myFn}
ローカル(Get-Command myFn).Definition
に作成された関数に対してのみ機能します。
また、ネイティブ関数の定義も見ることができますGet-EventLog
。CommandMetadata
そしてProxyCommand
コマンドのSystem.Management.Automation
名前空間は次のようになります:
using namespace System.Management.Automation
$cmd = Get-Command Get-EventLog
$meta = New-Object CommandMetadata($cmd)
$src = [ProxyCommand]::Create($meta)
$src | Write-Output