我使用自定义的 powershell 函数让我的生活更轻松。
例子:
# custom function
> function build {cmd /c build.ps1}
# invoke the function
> build
这非常适合让我快速运行我的构建脚本。
不幸的是,很容易忘记我创建的所有自定义函数。
是否有我可以运行的 cmdlet 来转储我的自定义函数列表?随后,一旦我知道这些功能是什么,是否可以运行 cmdlet 来删除不再需要的功能?
我使用自定义的 powershell 函数让我的生活更轻松。
例子:
# custom function
> function build {cmd /c build.ps1}
# invoke the function
> build
这非常适合让我快速运行我的构建脚本。
不幸的是,很容易忘记我创建的所有自定义函数。
是否有我可以运行的 cmdlet 来转储我的自定义函数列表?随后,一旦我知道这些功能是什么,是否可以运行 cmdlet 来删除不再需要的功能?
获取可用功能的列表
> Get-ChildItem function:\
删除 powershell 函数
# removes `someFunction`
> Remove-Item function:\someFunction
将此添加到您的个人资料中:
$sysfunctions = gci function:
function myfunctions {gci function: | where {$sysfunctions -notcontains $_} }
myfunctions 将仅列出自会话开始以来创建的函数。
一种解决方案是将所有函数放在一个 psm1 文件中并创建一个模块。这样您就可以导入模块并将所有命令放在一个不错的模块中。
我不喜欢给出的答案,因为出于某种原因,当我打电话时,我没有从我的个人资料中看到我的自定义函数,Get-ChildItem function:
所以这就是我所做的:
Function Get-MyCommands {
Get-Content -Path $profile | Select-String -Pattern "^function.+" | ForEach-Object {
# Find function names that contains letters, numbers and dashes
[Regex]::Matches($_, "^function ([a-z0-9.-]+)","IgnoreCase").Groups[1].Value
} | Where-Object { $_ -ine "prompt" } | Sort-Object
}
也可以使用
dir function:
或者清除它
dir function: | where {$_.source -ne [string]::Empty} | sort source