Отримати визначення функції і передати код


15

Я визначив динамічну функцію в powershell, наприклад:

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

Тоді я можу просто набрати test і запускати цю функцію, передавати її в інші команди і т.д. Досить зручно.

Чи є спосіб я можу отримати визначення команди? Чи можу я повторити код моєї функції test? (Без необхідності повертатися до моєї історії, де я її визначив?)

Відповіді:


17

Для функції називається 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 }
Kolob Canyon

3

Поточні відповіді працюватимуть лише для функцій, створених локально. Ви можете, наприклад, побачити подібне визначення місцевих функцій Get-EventLog.

Список усіх доступних функцій можна виконувати:

Get-ChildItem Function::

Будь-який з них може бути переданий ${function:myFn} або (Get-Command myFn).Definition

Якщо ви хочете зазирнути на власні функції, ви можете запустити [наступний код] [1:

$metadata = New-Object system.management.automation.commandmetadata (Get-Command Get-EventLog)
[System.management.automation.proxycommand]::Create($MetaData) | out-file C:\Get-EventLog.ps1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.