Как получить список пользовательских функций Powershell?

Я использую пользовательские функции PowerShell, чтобы сделать мою жизнь проще.

Пример:

# custom function
> function build {cmd /c build.ps1}

# invoke the function
> build

Это прекрасно работает, чтобы я мог быстро запустить скрипт сборки.
К сожалению, все пользовательские функции, которые я создал, легко забыть.

Есть ли командлет, который я могу запустить для вывода списка моих пользовательских функций? Впоследствии, когда я узнаю, что это за функции, есть ли командлет, который я могу запустить, чтобы удалить те, которые мне больше не нужны?

Ответ 1

Чтобы получить список доступных функций

> Get-ChildItem function:\

Чтобы удалить функцию powershell

# removes 'someFunction'
> Remove-Item function:\someFunction

Ответ 2

Добавьте это в свой профиль:

$sysfunctions = gci function:
function myfunctions {gci function: | where {$sysfunctions -notcontains $_} }

и myfunctions будут перечислены только те функции, которые были созданы с момента запуска сеанса.

Ответ 3

Одним из решений для вас является установка всех ваших функций в файл psm1 и создание модуля. Таким образом, вы можете импортировать модуль и иметь все команды в хорошем модуле.

Ответ 4

Можно также использовать

dir function:

Или прояснить

dir function: | where {$_.source -ne [string]::Empty} | sort source

Ответ 5

Мне не понравились данные ответы, потому что по какой-то причине я не увидел свои пользовательские функции из своего профиля в списке, когда я вызвал Get-ChildItem function:, поэтому вот что я сделал:

Function Get-MyCommands {
    Get-Content -Path $profile | Select-String -Pattern "^function.+" | ForEach-Object {
        [Regex]::Matches($_, "^function ([a-z.-]+)","IgnoreCase").Groups[1].Value
    } | Where-Object { $_ -ine "prompt" } | Sort-Object
}