-
Notifications
You must be signed in to change notification settings - Fork 224
/
CommonTestHelper.psm1
66 lines (56 loc) · 1.89 KB
/
CommonTestHelper.psm1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<#
.SYNOPSIS
Ensure the correct module stubs are loaded.
.PARAMETER SQLVersion
The major version of the SQL instance.
.PARAMETER ModuleName
The name of the module to load the stubs for. Default is 'SQLServer'.
#>
function Import-SQLModuleStub
{
[CmdletBinding(DefaultParameterSetName = 'Module')]
param
(
[Parameter(Mandatory = $true, ParameterSetName = 'Version')]
[UInt32]
$SQLVersion,
[Parameter(Mandatory = $false, ParameterSetName = 'Module')]
[ValidateSet('SQLPS','SQLServer')]
[String]
$ModuleName = 'SQLServer'
)
# Translate the module names to their appropriate stub name
$modulesAndStubs = @{
SQLPS = 'SQLPSStub'
SQLServer = 'SQLServerStub'
}
# Determine which module to ensure is loaded based on the parameters passed
if ( $PsCmdlet.ParameterSetName -eq 'Version' )
{
if ( $SQLVersion -le 12 )
{
$ModuleName = 'SQLPS'
}
elseif ( $SQLVersion -ge 13 )
{
$ModuleName = 'SQLServer'
}
}
# Get the stub name
$stubModuleName = $modulesAndStubs.$ModuleName
# Ensure none of the other stub modules are loaded
[array]$otherStubModules = $modulesAndStubs.Values | Where-Object -FilterScript { $_ -ne $stubModuleName }
$otherStubModules | Foreach-Object -Process {
if ( Get-Module -Name $_ )
{
Remove-Module -Name $_
}
}
# If the desired module is not loaded, load it now
if ( -not ( Get-Module -Name $stubModuleName ) )
{
# Build the path to the module stub
$moduleStubPath = Join-Path -Path ( Join-Path -Path ( Join-Path -Path ( Split-Path -Path $PSScriptRoot -Parent ) -ChildPath Unit ) -ChildPath Stubs ) -ChildPath "$($stubModuleName).psm1"
Import-Module -Name $moduleStubPath -Force -Global
}
}