Powershell 如何删除重复函数
我对使用Powershell(4.0版)很陌生 我创建了不同的模块: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
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