我是使用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-
开头的函数吗?
答案 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”模块中。