为Powershell模块添加Powershell管理单元并多次导入

Bla*_*ell 5 powershell cmdlets pssnapin

我想对正在构建的自定义Powershell Commandlet使用SqlServerCmdletSnapin。如果将以下代码添加到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
Run Code Online (Sandbox Code Playgroud)

第一次运行时一切正常:

导入模块MyModule-强制

但是,我第二次运行:

导入模块MyModule-强制

我收到以下错误:

Add-PsSnapin:已经添加了具有相同密钥的项目。

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

Lar*_*ens 4

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