-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathImport-PureStoragePowerShellToolkit.Core.ps1
51 lines (42 loc) · 1.83 KB
/
Import-PureStoragePowerShellToolkit.Core.ps1
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
function Import-ModuleManually {
[CmdletBinding()]
param(
[Parameter(Mandatory, ValueFromPipeline)]
[string]$ModuleName
)
process {
$manifestPath = Join-Path $ModuleName ($ModuleName + '.psd1')
$manifest = Import-PowerShellDataFile $manifestPath
$requiredModules = $manifest.RequiredModules | Where-Object { $_ -is [hashtable] -and $_['ModuleName'] -NotLike 'PureStoragePowershellToolkit*' }
$requiredModules | ForEach-Object {
$v = $_.ModuleVersion
$n = $_.ModuleName
$m = Get-Module -ListAvailable $n
if (-not $m) {
if ($PSCmdlet.ShouldContinue("Required module $n not found. Install it?", 'Required module installation')) {
Install-Module $n -MinimumVersion $v -ErrorAction Stop
}
else {
Write-Host "Required module $n not installed. Aborting."
exit
}
}
else {
$actualVersion = ($m.Version | Measure-Object -Maximum).Maximum
if ($actualVersion -lt $v) {
if ($PSCmdlet.ShouldContinue("Module $n version $actualVersion is lower than required $v. Update the module?", 'Required module update')) {
Install-Module $n -RequiredVersion $v -ErrorAction Stop -Force
}
else {
Write-Host "Required module $n not updated. Aborting."
exit
}
}
}
}
Write-host "Import $ModuleName"
Import-Module ".\$ModuleName"
}
}
'PureStoragePowerShellToolkit.FlashArray',
'PureStoragePowerShellToolkit.DatabaseTools' | Import-ModuleManually