Ответ 1
Чтобы получить список доступных функций
> Get-ChildItem function:\
Чтобы удалить функцию powershell
# removes 'someFunction'
> Remove-Item function:\someFunction
Я использую пользовательские функции PowerShell, чтобы сделать мою жизнь проще.
Пример:
# custom function
> function build {cmd /c build.ps1}
# invoke the function
> build
Это прекрасно работает, чтобы я мог быстро запустить скрипт сборки.
К сожалению, все пользовательские функции, которые я создал, легко забыть.
Есть ли командлет, который я могу запустить для вывода списка моих пользовательских функций? Впоследствии, когда я узнаю, что это за функции, есть ли командлет, который я могу запустить, чтобы удалить те, которые мне больше не нужны?
Чтобы получить список доступных функций
> Get-ChildItem function:\
Чтобы удалить функцию powershell
# removes 'someFunction'
> Remove-Item function:\someFunction
Добавьте это в свой профиль:
$sysfunctions = gci function:
function myfunctions {gci function: | where {$sysfunctions -notcontains $_} }
и myfunctions будут перечислены только те функции, которые были созданы с момента запуска сеанса.
Одним из решений для вас является установка всех ваших функций в файл psm1 и создание модуля. Таким образом, вы можете импортировать модуль и иметь все команды в хорошем модуле.
Можно также использовать
dir function:
Или прояснить
dir function: | where {$_.source -ne [string]::Empty} | sort source
Мне не понравились данные ответы, потому что по какой-то причине я не увидел свои пользовательские функции из своего профиля в списке, когда я вызвал 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
}