15

Я определил динамическую функцию в powershell, например так:

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

Затем я могу просто набрать test и запустить эту функцию, передать ее другим командам и т.д. Довольно удобно.

Есть ли способ, которым я могу получить определение команды? Могу ли я повторить код моего функционального test? (Не возвращаясь к моей истории туда, где я ее определил?)

3 ответа3

17

Для функции под названием test:

$function:test

Или, если имя функции содержит дефис (например, test-function):

${function:test-function}

В качестве альтернативы:

(Get-Command test).Definition
5
(Get-Command Test).Definition

Так я обычно получаю определения.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .