Skip to content
Open
Original file line number Diff line number Diff line change
Expand Up @@ -210,73 +210,6 @@ function Register-AzureArtifactsPSRepository
Write-Information "The installed version '$installedVersion' of the NuGet Package Provider on computer '$computerName' satisfies the minimum required version of '$minimumRequiredVersion'."
return $true
}

function Install-AndImportPowerShellGet([string] $scope)
{
[string] $computerName = $Env:ComputerName
[string] $currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name

[System.Version] $minimumRequiredPowerShellGetVersion = '2.2.1'
$latestPowerShellGetVersionInstalled =
Get-Module -Name 'PowerShellGet' -ListAvailable |
Select-Object -ExpandProperty 'Version' -Unique |
Sort-Object -Descending |
Select-Object -First 1

[bool] $minimumPowerShellGetVersionIsNotInstalled = ($latestPowerShellGetVersionInstalled -lt $minimumRequiredPowerShellGetVersion)
if ($minimumPowerShellGetVersionIsNotInstalled)
{
[string] $currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
Write-Information "Installing latest PowerShellGet version for user '$currentUser' to scope '$scope' on computer '$computerName'."
Install-Module -Name PowerShellGet -Repository PSGallery -Scope $scope -Force -AllowClobber
}
else
{
Write-Information "The installed version '$latestPowerShellGetVersionInstalled' of the PowerShellGet module on computer '$computerName' satisfies the minimum required version of '$minimumRequiredPowerShellGetVersion'."
}

Import-PowerShellGetModule -minimumRequiredPowerShellGetVersion $minimumRequiredPowerShellGetVersion
}

function Import-PowerShellGetModule([System.Version] $minimumRequiredPowerShellGetVersion)
{
$currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion

[bool] $powerShellGetIsNotAlreadyImported = ($null -eq $currentlyImportedVersion)
if ($powerShellGetIsNotAlreadyImported)
{
Import-Module -Name PowerShellGet -MinimumVersion $minimumRequiredPowerShellGetVersion -Global -Force
$currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion
}
Write-Verbose "The currently imported PowerShellGet module version is '$currentlyImportedVersion'."

[bool] $powerShellGetVersionImportedIsHighEnough = ($currentlyImportedVersion -ge $minimumRequiredPowerShellGetVersion)
if ($powerShellGetVersionImportedIsHighEnough)
{
return
}

Write-Warning "The PowerShellGet module version currently imported is '$currentlyImportedVersion', which does not meet the minimum requirement of '$minimumRequiredPowerShellGetVersion'. The current PowerShellGet module will be removed and a newer version imported."
Remove-Module -Name PowerShellGet -Force
Import-Module -Name PowerShellGet -MinimumVersion $minimumRequiredPowerShellGetVersion -Global -Force
}

function Get-CurrentlyImportedPowerShellGetModuleVersion
{
[System.Version] $powerShellGetModuleVersionImported = $null
$lowestCurrentlyImportedModuleVersion =
Get-Module -Name PowerShellGet |
Select-Object -ExpandProperty 'Version' -Unique |
Sort-Object |
Select-Object -First 1

if ($null -ne $lowestCurrentlyImportedModuleVersion)
{
$powerShellGetModuleVersionImported = $lowestCurrentlyImportedModuleVersion
}

return $powerShellGetModuleVersionImported
}
}
}

Expand Down Expand Up @@ -651,6 +584,8 @@ function Find-AzureArtifactsModule
$AllowPrerelease
)

Install-AndImportPowerShellGet

[hashtable] $parametersWithCredentials = Get-PsBoundParametersWithCredential -parameters $PSBoundParameters
Find-Module @parametersWithCredentials
}
Expand Down Expand Up @@ -769,6 +704,11 @@ function Install-AzureArtifactsModule
$PassThru
)

Install-AndImportPowerShellGet -scope $Scope

$powerShellGetVersionsImported = Get-Module -Name PowerShellGet | Select-Object -ExpandProperty Version
Write-Verbose "About to run Install-Module. Current PowerShellGet versions imported are '$powerShellGetVersionsImported'."

[hashtable] $parametersWithCredentials = Get-PsBoundParametersWithCredential -parameters $PSBoundParameters
Install-Module @parametersWithCredentials
}
Expand Down Expand Up @@ -854,6 +794,11 @@ function Update-AzureArtifactsModule
$PassThru
)

Install-AndImportPowerShellGet -scope $Scope

$powerShellGetVersionsImported = Get-Module -Name PowerShellGet | Select-Object -ExpandProperty Version
Write-Verbose "About to run Update-Module. Current PowerShellGet versions imported are '$powerShellGetVersionsImported'."

[hashtable] $parametersWithCredentials = Get-PsBoundParametersWithCredential -parameters $PSBoundParameters
Update-Module @parametersWithCredentials
}
Expand Down Expand Up @@ -1039,6 +984,78 @@ function Get-SecurePersonalAccessTokenFromEnvironmentVariable
return $securePersonalAccessToken
}

function Install-AndImportPowerShellGet([string] $scope)
{
[string] $computerName = $Env:ComputerName
[string] $currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name

[System.Version] $minimumRequiredPowerShellGetVersion = '2.2.1'
$latestPowerShellGetVersionInstalled = Get-LatestPowerShellGetModuleVersionInstalled

[bool] $minimumPowerShellGetVersionIsNotInstalled = ($latestPowerShellGetVersionInstalled -lt $minimumRequiredPowerShellGetVersion)
if ($minimumPowerShellGetVersionIsNotInstalled)
{
[string] $currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
Write-Information "Installing latest PowerShellGet version for user '$currentUser' to scope '$scope' on computer '$computerName'."
Install-Module -Name PowerShellGet -Repository PSGallery -Scope $scope -Force -AllowClobber
}
else
{
Write-Information "The installed version '$latestPowerShellGetVersionInstalled' of the PowerShellGet module on computer '$computerName' satisfies the minimum required version of '$minimumRequiredPowerShellGetVersion'."
}

Import-LatestPowerShellGetModule -latestPowerShellGetVersionInstalled $latestPowerShellGetVersionInstalled
}

function Import-LatestPowerShellGetModule([System.Version] $latestPowerShellGetVersionInstalled)
{
$currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion

[bool] $powerShellGetIsNotAlreadyImported = ($null -eq $currentlyImportedVersion)
if ($powerShellGetIsNotAlreadyImported)
{
Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Global -Force
$currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion
}
Write-Verbose "The currently imported PowerShellGet module version is '$currentlyImportedVersion', and the latest installed version is '$latestPowerShellGetVersionInstalled'."

[bool] $latestModuleVersionIsImported = ($currentlyImportedVersion -ge $latestPowerShellGetVersionInstalled)
if ($latestModuleVersionIsImported)
{
return
}

Write-Warning "The PowerShellGet module version currently imported is '$currentlyImportedVersion', which is less than the latest installed version '$latestPowerShellGetVersionInstalled'. The current PowerShellGet module will be removed and the latest version imported."
Remove-Module -Name PowerShellGet -Force
Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Global -Force

$currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion
Write-Verbose "The PowerShellGet module version now imported is '$currentlyImportedVersion'."
}

function Get-LatestPowerShellGetModuleVersionInstalled
{
$latestPowerShellGetVersionInstalled =
Get-Module -Name 'PowerShellGet' -ListAvailable |
Select-Object -ExpandProperty 'Version' -Unique |
Sort-Object -Descending |
Select-Object -First 1

return $latestPowerShellGetVersionInstalled
}

function Get-CurrentlyImportedPowerShellGetModuleVersion
{
[System.Version] $lowestCurrentlyImportedModuleVersion = $null
$lowestCurrentlyImportedModuleVersion =
Get-Module -Name PowerShellGet |
Select-Object -ExpandProperty 'Version' -Unique |
Sort-Object |
Select-Object -First 1

return $lowestCurrentlyImportedModuleVersion
}

Export-ModuleMember -Function Find-AzureArtifactsModule
Export-ModuleMember -Function Install-AzureArtifactsModule
Export-ModuleMember -Function Install-AndUpdateAzureArtifactsModule
Expand Down