関数の定義を取得し、コードをエコーし​​ます


18

次のように、powershellで動的関数を定義しました。

> function test { dir -r -fil *.vbproj | ft directory, name }

次にtest、その関数を入力して実行するだけで、他のコマンドにパイプすることができます。かなり便利です。

コマンドの定義を取得する方法はありますか?関数のコードをエコーアウトできますtestか?(私の履歴を定義した場所に戻る必要はありませんか?)

回答:


21

という関数の場合test

$function:test

または、関数名にハイフンが含まれる場合(例:)test-function

${function:test-function}

代わりに:

(Get-Command test).Definition

5
(Get-Command Test).Definition

それが私が通常定義を取得する方法です。


$profile function def ($funcname) { (Get-Command $funcname).Definition }
コロブキャニオン

3

現在の回答は、ローカルで作成された機能に対してのみ機能します。たとえば、などのネイティブ関数の定義を確認できGet-EventLogます。

使用可能なすべての機能のリストについては、次を実行できます。

Get-ChildItem Function::

これらのいずれかがに渡すことができます${function:myFn}(Get-Command myFn).Definition

ネイティブ関数を覗きたい場合、次のコードを実行できます

$metadata = New-Object system.management.automation.commandmetadata (Get-Command Get-EventLog)
[System.management.automation.proxycommand]::Create($MetaData) | out-file C:\Get-EventLog.ps1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.