Powershell 如何删除重复函数

Powershell 如何删除重复函数,powershell,Powershell,我对使用Powershell(4.0版)很陌生 我创建了不同的模块: My-Modules My-Tools My-HelpfullCommands 在每个模块目录中,我都有一个.psd1文件,在其中我将函数设置为export='My-*'。同一目录中有一个.psm1文件,其中包含不同的函数 例如,在“My Modules.psm1”中: 在“My Tools.psm1”中: 当我用Get Command-Name My-*检查可用命令时,我找到了预期的4个命令 但是:当我检查Ge

我对使用Powershell(4.0版)很陌生

我创建了不同的模块:

My-Modules  
My-Tools  
My-HelpfullCommands  
在每个模块目录中,我都有一个.psd1文件,在其中我将
函数设置为export='My-*'
。同一目录中有一个.psm1文件,其中包含不同的函数

例如,在“My Modules.psm1”中:

在“My Tools.psm1”中:

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

但是:当我检查
Get命令-Name*SMO*
时,我发现
新的SMO连接
两次。一次来自模块我的工具,一次来自模块我的模块

当我尝试执行
New-SMOConnection
时,会收到错误消息
New-SMOConnection:术语“New-SMOConnection”未被识别为cmdlet的名称,function…
(您知道ObjectNotFound消息;-)

所以,我的问题是:
是否可以“删除”新SMOConnection功能,使其不再可见

另一个问题:
为什么新的SMOConnection函数甚至会在Get命令中出现?

函数是否应导出
仅导出以
My-
开头的函数?

是的,您可以使用
删除项
cmdlet执行此操作:

Remove-Item -Path Function:New-SMOConnection

可以,您可以使用
Remove Item
cmdlet执行此操作:

Remove-Item -Path Function:New-SMOConnection

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

现在,
新SMOConnection
只声明一次,我可以将其用于所有模块

一切似乎都按预期进行


接下来,我计划将所有littel helper函数添加到“my HelpfullCommands”模块中。

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

现在,
新SMOConnection
只声明一次,我可以将其用于所有模块

一切似乎都按预期进行


接下来,我计划将所有littel helper函数添加到“my HelpfullCommands”模块中。

对不起,我忘了提到我已经尝试过了。您的命令给了我ObjectNotFound错误:
删除项:找不到路径“函数:\New SMOConnection”,因为它不存在
。。。当我尝试使用
Get ChildItem-Path函数:\New SMO*
时,它也不会列出任何内容。。这些函数是否可能是我使用.psd1文件之前的一些“遗留”功能?在我手动导入模块后,命令
New SMOConnection
仅显示一次,并且正在工作。。但当我关闭ISE窗口并再次打开它时,命令再次显示两次。有什么想法吗?可能是因为你的个人资料里有些东西。使用
psedit$profile
Nice检查它,谢谢@Martin Brandl的命令。我不知道。但是看起来里面没有什么不对劲的地方。。。它显示了6个条目:
System.Windows.Interactivity.dll
ScriptBrowser.dll
BestPractices.dll
[ScriptExplorer.Views.MainView]
[BestPractices.Views.BestPracticesView]
VisibleVerticalDDontools.SelectedDDontool=$ScriptBrowser
。。如果我在服务器上运行它,则不会显示任何内容,因为该文件不存在。。我在电脑和服务器上也有同样的行为对不起,我忘了说我已经试过了。您的命令给了我ObjectNotFound错误:
删除项:找不到路径“函数:\New SMOConnection”,因为它不存在
。。。当我尝试使用
Get ChildItem-Path函数:\New SMO*
时,它也不会列出任何内容。。这些函数是否可能是我使用.psd1文件之前的一些“遗留”功能?在我手动导入模块后,命令
New SMOConnection
仅显示一次,并且正在工作。。但当我关闭ISE窗口并再次打开它时,命令再次显示两次。有什么想法吗?可能是因为你的个人资料里有些东西。使用
psedit$profile
Nice检查它,谢谢@Martin Brandl的命令。我不知道。但是看起来里面没有什么不对劲的地方。。。它显示了6个条目:
System.Windows.Interactivity.dll
ScriptBrowser.dll
BestPractices.dll
[ScriptExplorer.Views.MainView]
[BestPractices.Views.BestPracticesView]
VisibleVerticalDDontools.SelectedDDontool=$ScriptBrowser
。。如果我在服务器上运行它,则不会显示任何内容,因为该文件不存在。。我在电脑和服务器上有相同的行为
Remove-Item -Path Function:New-SMOConnection