75 lines
2.3 KiB
PowerShell
75 lines
2.3 KiB
PowerShell
function Install-ModuleDependency {
|
|
<#
|
|
.SYNOPSIS
|
|
Install required modules of the module manifest file.
|
|
|
|
.DESCRIPTION
|
|
Use this cmdlet to install required modules of the module manifest file.
|
|
|
|
.INPUTS
|
|
[None]
|
|
|
|
.OUTPUTS
|
|
[None]
|
|
|
|
.EXAMPLE
|
|
Install-ModuleDependency
|
|
|
|
.NOTES
|
|
#>
|
|
|
|
[CmdletBinding()]
|
|
#[OutputType([String])]
|
|
param ()
|
|
|
|
begin {
|
|
}
|
|
|
|
process {
|
|
$Repo = Get-RepoPath
|
|
$ManifestContent = Import-PowerShellDataFile -Path $Repo.Src.Manifest.Item.FullName
|
|
if ($ManifestContent.RequiredModules) {
|
|
foreach ($Module in $ManifestContent.RequiredModules) {
|
|
if ($Module.RequiredVersion) {
|
|
$ParamsInstallModule = @{
|
|
Name = $Module.ModuleName
|
|
Scope = 'AllUsers'
|
|
RequiredVersion = $Module.RequiredVersion
|
|
Force = $true
|
|
AllowClobber = $true
|
|
Verbose = $VerbosePreference
|
|
ErrorAction = 'Stop'
|
|
}
|
|
}
|
|
else {
|
|
$ParamsInstallModule = @{
|
|
Name = $Module.ModuleName
|
|
Scope = 'AllUsers'
|
|
MinimumVersion = $Module.ModuleVersion
|
|
Force = $true
|
|
AllowClobber = $true
|
|
Verbose = $VerbosePreference
|
|
ErrorAction = 'Stop'
|
|
}
|
|
}
|
|
try {
|
|
Install-Module @ParamsInstallModule
|
|
$Message = 'Module <{0}> successfully installed' -f $Module.ModuleName
|
|
Write-Verbose -Message $Message
|
|
}
|
|
catch {
|
|
$Message = 'Module <{0}> could not be installed! ' -f $Module.ModuleName
|
|
$Message += $_.Exception.Message
|
|
Write-Error -Message $Message -ErrorAction 'Stop'
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
Write-Verbose -Message 'no required modules found...'
|
|
}
|
|
}
|
|
|
|
end {
|
|
}
|
|
}
|