Dapatkan definisi fungsi dan gema kode


18

Saya telah mendefinisikan fungsi dinamis di PowerShell, seperti ini:

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

Lalu saya bisa mengetik testdan menjalankan fungsi itu, memipakannya ke perintah lain, dll. Cukup praktis.

Apakah ada cara saya bisa mendapatkan definisi perintah? Bisakah saya mengulang kode untuk fungsi saya test? (Tanpa harus kembali melalui sejarah saya ke tempat saya mendefinisikannya?)

Jawaban:


21

Untuk fungsi yang disebut test:

$function:test

Atau jika nama fungsi berisi tanda hubung (mis. test-function):

${function:test-function}

Kalau tidak:

(Get-Command test).Definition

5
(Get-Command Test).Definition

Begitulah biasanya saya mendapatkan definisi.


In$profile function def ($funcname) { (Get-Command $funcname).Definition }
Kolob Canyon

3

Jawaban saat ini hanya akan berfungsi untuk fungsi yang telah dibuat secara lokal. Anda dapat, misalnya, melihat definisi fungsi asli seperti Get-EventLog.

Untuk daftar semua fungsi yang tersedia, Anda dapat menjalankan:

Get-ChildItem Function::

Semua ini dapat diteruskan ke ${function:myFn}atau(Get-Command myFn).Definition

Jika Anda ingin mengintip fungsi asli, Anda dapat menjalankan kode ini :

$metadata = New-Object system.management.automation.commandmetadata (Get-Command Get-EventLog)
[System.management.automation.proxycommand]::Create($MetaData) | out-file C:\Get-EventLog.ps1
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.