Fonksiyonun tanımını alın ve kodu yankılayın


19

Powershell'de aşağıdaki gibi dinamik bir işlev tanımladım:

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

Sonra sadece testbu işlevi yazabilir ve çalıştırabilir, diğer komutlara vb.

Komutun tanımını almamın bir yolu var mı? İşlevimin kodunu yankılayabilir miyim test? (Geçmişim boyunca onu tanımladığım yere geri dönmek zorunda kalmadan?)

Yanıtlar:


22

Adlı bir işlev için test:

$function:test

Veya işlev adı bir tire işareti (ör. test-function) İçeriyorsa :

${function:test-function}

Alternatif:

(Get-Command test).Definition

5
(Get-Command Test).Definition

Normalde tanımları bu şekilde alıyorum.


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

3

Geçerli cevaplar yalnızca yerel olarak oluşturulan işlevler için çalışır. Örneğin, gibi yerel işlevlerin tanımını görebilirsiniz Get-EventLog.

Mevcut tüm işlevlerin bir listesi için şunları çalıştırabilirsiniz:

Get-ChildItem Function::

Bunlardan herhangi biri ${function:myFn}veya(Get-Command myFn).Definition

Yerel işlevlere bakmak istiyorsanız, bu kodu çalıştırabilirsiniz :

$metadata = New-Object system.management.automation.commandmetadata (Get-Command Get-EventLog)
[System.management.automation.proxycommand]::Create($MetaData) | out-file C:\Get-EventLog.ps1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.