PSInstallDependencies.psm1
<# .SYNOPSIS This function install any dependencies from external repository based on .PSD1 file specified. .PARAMETER path Path for the .PSD1 file. .PARAMETER repository Specifies the friendly name of a repository that has been registered by running Register-PSRepository. .PARAMETER credential PSCredential to be used for authentication with repository. .EXAMPLE Invoke-InstallDependencies -Path ./configuration.psd1 -Repository 'sample' -Credential $credential #> function Invoke-InstallDependencies { [CmdletBinding()] param( [Parameter(Mandatory = $true)] [String] $path, [Parameter(Mandatory = $true)] [String] $repository, [Parameter(Mandatory = $false)] [System.Management.Automation.PSCredential] $credential ) $psDataFile = Import-PowershellDataFile -Path $path $requiredModules = $psDataFile['RequiredModules'] if ($null -ne $requiredModules) { foreach ($module in $requiredModules) { $moduleName = $module['ModuleName'] if (-not $moduleName) { $moduleName = $module } $moduleInfo = @{ Name = $moduleName Repository = $repository ErrorAction = 'SilentlyContinue' } if ($credential) { $moduleInfo['Credential'] = $credential } if ($module['ModuleVersion']) { $moduleInfo['RequiredVersion'] = $module['ModuleVersion'] } if (-not (Get-Module -Name $moduleName -ListAvailable)) { Write-Output "Installing module $moduleName from repository $repository..." Install-Module @moduleInfo -SkipPublisherCheck -Force -Verbose } } } } Export-ModuleMember -Function 'Invoke-InstallDependencies' |