为Powershell模块添加Powershell Snapin并多次导入

时间:2013-07-17 21:07:17

标签: powershell cmdlets pssnapin

我想将SqlServerCmdletSnapin用于我正在构建的自定义Powershell Commandlet。如果我将以下代码添加到我的PSM1的开头:

if ( (Get-PSSnapin -Name sqlserverprovidersnapin100 -ErrorAction SilentlyContinue) -eq $null )
{
    Add-PsSnapin sqlserverprovidersnapin100
}

if ( (Get-PSSnapin -Name sqlservercmdletsnapin100 -ErrorAction SilentlyContinue) -eq $null )
{
    Add-PsSnapin sqlservercmdletsnapin100
}
Export-ModuleMember Invoke-SqlCmd

我第一次跑步时一切都很好:

  

导入模块MyModule -Force

然而,我第二次跑:

  

导入模块MyModule -Force

我收到以下错误:

  

Add-PsSnapin:已添加具有相同键的项目。

我的代码不能再调用Invoke-SqlCmd。将powershell管理单元添加到自定义模块的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

您可能希望尝试通过模块清单(.psd1)指定您自己的模块所需的此模块。请参阅RequiredModules here