Получить определение функции и повторить код


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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.