-
Notifications
You must be signed in to change notification settings - Fork 67
/
CommonTestHelper.psm1
128 lines (112 loc) · 3.99 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<#
.SYNOPSIS
Returns an invalid argument exception object
.PARAMETER Message
The message explaining why this error is being thrown
.PARAMETER ArgumentName
The name of the invalid argument that is causing this error to be thrown
#>
function Get-InvalidArgumentRecord
{
[CmdletBinding()]
param
(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$Message,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[String]
$ArgumentName
)
$argumentException = New-Object -TypeName 'ArgumentException' -ArgumentList @( $Message,
$ArgumentName )
$newObjectParams = @{
TypeName = 'System.Management.Automation.ErrorRecord'
ArgumentList = @( $argumentException, $ArgumentName, 'InvalidArgument', $null )
}
return New-Object @newObjectParams
}
<#
.SYNOPSIS
Returns an invalid operation exception object
.PARAMETER Message
The message explaining why this error is being thrown
.PARAMETER ErrorRecord
The error record containing the exception that is causing this terminating error
#>
function Get-InvalidOperationRecord
{
[CmdletBinding()]
param
(
[ValidateNotNullOrEmpty()]
[String]
$Message,
[ValidateNotNull()]
[System.Management.Automation.ErrorRecord]
$ErrorRecord
)
if ($null -eq $Message)
{
$invalidOperationException = New-Object -TypeName 'InvalidOperationException'
}
elseif ($null -eq $ErrorRecord)
{
$invalidOperationException =
New-Object -TypeName 'InvalidOperationException' -ArgumentList @( $Message )
}
else
{
$invalidOperationException =
New-Object -TypeName 'InvalidOperationException' -ArgumentList @( $Message,
$ErrorRecord.Exception )
}
$newObjectParams = @{
TypeName = 'System.Management.Automation.ErrorRecord'
ArgumentList = @( $invalidOperationException.ToString(), 'MachineStateIncorrect',
'InvalidOperation', $null )
}
return New-Object @newObjectParams
}
<#
.SYNOPSIS
Some tests require a self-signed certificate to be created. However, the
New-SelfSignedCertificate cmdlet built into Windows Server 2012 R2 is too
limited to work for this process.
Therefore an alternate method of creating self-signed certificates to meet the
reqirements. A script on Microsoft Script Center can be used for this but must
be downloaded:
https://gallery.technet.microsoft.com/scriptcenter/Self-signed-certificate-5920a7c6
This cmdlet will install the script if it is not available and dot source it.
.OUTPUTS
The path to the script that was downloaded.
#>
function Install-NewSelfSignedCertificateExScript
{
[CmdletBinding()]
[OutputType([String])]
param
(
)
$newSelfSignedCertURL = 'https://gallery.technet.microsoft.com/scriptcenter/Self-signed-certificate-5920a7c6/file/101251/2/New-SelfSignedCertificateEx.zip'
$newSelfSignedCertZip = Split-Path -Path $newSelfSignedCertURL -Leaf
$newSelfSignedCertZipPath = Join-Path -Path $ENV:Temp -ChildPath $newSelfSignedCertZip
$newSelfSignedCertScriptPath = Join-Path -Path $ENV:Temp -ChildPath 'New-SelfSignedCertificateEx.ps1'
if (-not (Test-Path -Path $newSelfSignedCertScriptPath))
{
if (Test-Path -Path $newSelfSignedCertZip)
{
Remove-Item -Path $newSelfSignedCertZipPath -Force
}
Invoke-WebRequest -Uri $newSelfSignedCertURL -OutFile $newSelfSignedCertZipPath
Add-Type -AssemblyName System.IO.Compression.FileSystem
[System.IO.Compression.ZipFile]::ExtractToDirectory($newSelfSignedCertZipPath, $ENV:Temp)
} # if
return $newSelfSignedCertScriptPath
} # end function Install-NewSelfSignedCertificateExScript
Export-ModuleMember -Function `
Install-NewSelfSignedCertificateExScript, `
Get-InvalidArgumentRecord, `
Get-InvalidOperationRecord