如何删除重复的功能

时间:2016-08-26 07:11:50

标签: powershell

我是使用Powershell(4.0版)的新手。

我创建了不同的模块:

My-Modules  
My-Tools  
My-HelpfullCommands  

在每个模块目录中,我都有.psd1文件,我设置了FunctionsToExport='My-*'。在同一目录中是一个包含不同功能的.psm1文件。

例如" My-Modules.psm1":

My-GetAvailabilityGroup
My-LastSqlBackup  
New-SMOConnection

在" My-Tools.psm1":

My-BackupRestoreFromAg
My-GetDbSize
New-SMOConnection

当我用Get-Command -Name My-*检查可用命令时,我找到了预期的4个命令。

但是:当我检查Get-Command -Name *SMO*时,我发现了New-SMOConnection两次。一次来自模块My-Tools,一次来自模块My-Modules。

当我尝试执行New-SMOConnection时,我收到错误消息New-SMOconnection : The term 'New-SMOconnection' is not recognized as the name of a cmdlet, function...(您知道ObjectNotFound消息;-))

所以,我的问题是:
有可能"删除" New-SMOConnection函数,以便它们不再可见?

另一个问题:
为什么New-SMOConnection函数甚至出现在Get-Command中? 不应该FunctionsToExport只导出以My-开头的函数吗?

2 个答案:

答案 0 :(得分:0)

是的,您可以使用Remove-Item cmdlet:

执行此操作
Remove-Item -Path Function:New-SMOConnection

答案 1 :(得分:0)

我从目录中删除了所有模块并再次打开ISE以验证New-SMOConnection命令已消失。然后创建一个新模块(My-HelpfullCommands),其中只包含New-SMOConnection。在所有其他模块中,我删除了New-SMOConnection函数并将它们复制回模块目录。

现在New-SMOConnection只被声明一次,我可以将它用于我的所有模块。

一切似乎都按预期工作。

接下来,我计划将所有的littel帮助函数添加到“My-HelpfullCommands”模块中。