23

我使用自定义的 powershell 函数让我的生活更轻松。

例子:

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

# invoke the function
> build

这非常适合让我快速运行我的构建脚本。
不幸的是,很容易忘记我创建的所有自定义函数。

是否有我可以运行的 cmdlet 来转储我的自定义函数列表?随后,一旦我知道这些功能是什么,是否可以运行 cmdlet 来删除不再需要的功能?

4

5 回答 5

27

获取可用功能的列表

> Get-ChildItem function:\

删除 powershell 函数

# removes `someFunction`
> Remove-Item function:\someFunction
于 2013-03-29T00:13:00.247 回答
10

将此添加到您的个人资料中:

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

myfunctions 将仅列出自会话开始以来创建的函数。

于 2013-03-29T00:19:38.707 回答
4

一种解决方案是将所有函数放在一个 psm1 文件中并创建一个模块。这样您就可以导入模块并将所有命令放在一个不错的模块中。

于 2013-03-29T04:09:43.883 回答
4

我不喜欢给出的答案,因为出于某种原因,当我打电话时,我没有从我的个人资料中看到我的自定义函数,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
}
于 2019-08-04T00:57:52.520 回答
1

也可以使用

dir function:

或者清除它

dir function: | where {$_.source -ne [string]::Empty} | sort source
于 2019-04-24T10:58:34.393 回答