Public/Invoke-OriAzBopDownloadPackage.ps1

<#
.DESCRIPTION
This function Download artifact
.SYNOPSIS
This function Download artifact
 
       
.PARAMETER RepositoryCredential
Credentials for connection to repository
 
.PARAMETER Artifacts
String array of Artifacts to download. e.g. @(@{Name = 'Ori.Online.Website'; Version='4.0.0-UAT-236612'}, @{Name = 'Ori.Online.Common.Web'; Version='4.0.0-UAT-236612'})
 
 
.EXAMPLE
$password = ConvertTo-SecureString 'password1' -AsPlainText -Force
$RepositoryCredential = New-Object System.Management.Automation.PSCredential 'Wuhan@myemail.com',$password
 
Invoke-OriAzBopDownloadPackage `
-RepositoryCredential $RepositoryCredential `
-Artifacts @(@{Name = 'Ori.Online.Website'; RequiredVersion = '4.250.6224.1-UAT-2003141613'})
#>


function Invoke-OriAzBopDownloadPackage {
    
  [CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = "Low")]
  param
  (         
    [parameter(Mandatory = $true, HelpMessage = 'Credentials for connection to repository')]
    [PSCredential] $RepositoryCredential,

    [parameter(Mandatory = $false, HelpMessage = "String array of Artifacts to download. e.g. @(@{Name = 'Ori.Online.Website'; Version='4.0.0-UAT-236612'}, @{Name = 'Ori.Online.Common.Web'; Version='4.0.0-UAT-236612'})")]
    [PSObject[]] $Artifacts

  )
  
  #in case of any error we want to stop execution, in stderr having the error. Use try-catch to handle errors if needed.
  $ErrorActionPreference = "Stop";
  Write-Output "-- Invoke-OriAzBopDownloadPackage --"
  Write-Output "RepositoryCredential: $(ConvertTo-Json $RepositoryCredential) "
  Write-Output "Artifacts: $(ConvertTo-Json $Artifacts) "
  Write-Output "-- Invoke-Commnad on machine [$($env:COMPUTERNAME)]"


  $failInTheEnd = $false
  foreach ($OneArtifact in $Artifacts) {
    $OneArtifact += @{Credential = $RepositoryCredential }
    $PackageToDownload = Find-Package @OneArtifact 

    if ([string]::IsNullOrEmpty($PackageToDownload)) {
      Write-Output "Such artifact not found $(Convertto-Json $OneArtifact)"
      $failInTheEnd = $true
    }
    else {
      Install-Package @OneArtifact 
    }
  }
          
  if ($failInTheEnd) {
    Write-Error "Some artifacts was not found. See previous log."
  }
  Write-Output "-- End of Invoke-Commnad on machine [$($env:COMPUTERNAME)]"
  Write-Output "-- End of Invoke-OriAzBopDownloadPackage --"


}