Private/Invoke-ResolveDependency.ps1
<#
.SYNOPSIS Parse installed module based to get dependent module .PARAMETER InstalledLocation Path to installed location of the module .PARAMETER Credential Repository Credential .PARAMETER Repository Name of the repository #> function Invoke-ResolveDependency { [CmdLetBinding()] param ( [Parameter(Mandatory = $true, HelpMessage = "Path to installed location of the module")] [string] $InstalledLocation, [Parameter(Mandatory=$false, HelpMessage = "Repository Credential")] [PSCredential] $Credential = $null, [Parameter(Mandatory=$false, HelpMessage = "Repository name")] [string] $Repository = $null, [Parameter(Mandatory=$false, HelpMessage = "Repository name")] [string[]] $AllowPrereleaseList = @('Psql') ) $ErrorActionPreference = 'Stop' Write-Verbose '-- begin - Invoke-ResolveDependency --' Write-Verbose "InstalledLocation: $InstalledLocation" $psdFiles = Get-ChildItem -Path $InstalledLocation -Filter *.psd1 -File foreach ($onePsdFile in $psdFiles) { $Manifest = Import-PowershellDataFile -LiteralPath $onePsdFile.FullName foreach ($onePrivateData in $Manifest.PrivateData) { foreach ($onePSData in $onePrivateData.PSData) { foreach ($oneExternalModuleDependencies in $onePSData.ExternalModuleDependencies) { [Hashtable] $PSGAlleryInstallParam = Get-VersionParamHelper ` -Module $oneExternalModuleDependencies #$PSGAlleryInstallParam += @{ # Repository = 'PSGallery' # Credential = $null #} Write-Verbose "AllowPrereleaseList: $($AllowPrereleaseList -join ',')" Write-Verbose "PSGAlleryInstallParam: $(ConvertTo-Json -InputObject $PSGAlleryInstallParam)" Write-Verbose "PSGAlleryInstallParam.Name: $($PSGAlleryInstallParam.Name)" if($AllowPrereleaseList -contains $PSGAlleryInstallParam.Name) { Write-Verbose "Contains" $PSGAlleryInstallParam += @{ $AllowPrerelease = $True } Write-Verbose "Added" } Write-Verbose "Install prerequisity from PSGallery:" Write-Debug (ConvertTo-Json -InputObject $PSGAlleryInstallParam) Install-OriAzBopPrerequisity @PSGAlleryInstallParam ` -SkipImport:$True ` -AllowClobber:$True ` -SkipPublisherCheck:$True ` -Verbose:$VerbosePreference ` -Debug:$DebugPreference | Out-Null #Invoke-ModuleInstall @PSGAlleryInstallParam ` #-Verbose:$VerbosePreference ` #-Debug:$DebugPreference | Out-Null } } } foreach ($oneModule in $Manifest.RequiredModules) { $InstallParam = Get-VersionParamHelper -Module $oneModule if($null -ne $Credential) { $InstallParam += @{Credential = $Credential} } if($null -ne $Repository) { $InstallParam += @{Repository = $Repository} } Write-Debug (ConvertTo-Json -InputObject $InstallParam) Invoke-ModuleInstall @InstallParam | Out-Null } } Write-Verbose '-- end - Invoke-ResolveDependency --' } |