-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModuleManager.ps1
More file actions
34 lines (30 loc) · 1.21 KB
/
ModuleManager.ps1
File metadata and controls
34 lines (30 loc) · 1.21 KB
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
$modules = "DockerCompletion"
# Import from local
Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1
Write-Output "Checking modules..."
# Import from PowerShell Gallery
foreach ($module in $modules) {
$installed = Get-Module -ListAvailable -Name $module | Sort-Object Version -Descending | Select-Object -First 1
if (-not $installed) {
Write-Output "Installing $module..."
Install-Module -Name $module -Scope CurrentUser -Force
} else {
#version check
$latest = Find-Module -Name $module -ErrorAction SilentlyContinue
if ($latest.Version -gt $installed.Version) {
Write-Output "Updating $module from version $($installed.Version) to $($latest.Version)..."
# clean install
Uninstall-Module -Name $module -Force
Install-Module -Name $module -Scope CurrentUser -Force
}
}
Import-Module $module -Force
}
# uninstall module
foreach ($module in Get-InstalledModule) {
if ($module.Name -notin $modules) {
Write-Output "Uninstalling $($module.Name)..."
Uninstall-Module -Name $module.Name -Force
}
}
Get-Module | Select-Object @{Name="Imported module"; Expression={$_.Name}}, Version