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 $module = @{ Name = $moduleName } } $module['Repository'] = $repository $module['ErrorAction'] = 'SilentlyContinue' if ($credential) { $module['Credential'] = $credential } if (-not (Get-Module -Name $moduleName -ListAvailable)) { Write-Output "Installing module $moduleName from repository $repository..." Find-Module @module | Install-Module -SkipPublisherCheck -Force -Verbose } } } } Export-ModuleMember -Function 'Invoke-InstallDependencies' |