From ed232ef86ccb6aea5cc4e276b0cc610c2fee022e Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 18:02:36 -0600 Subject: [PATCH 01/14] Attempt to import latest PowerShellGet version --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index f3c2392..f40f0be 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -245,7 +245,7 @@ function Register-AzureArtifactsPSRepository [bool] $powerShellGetIsNotAlreadyImported = ($null -eq $currentlyImportedVersion) if ($powerShellGetIsNotAlreadyImported) { - Import-Module -Name PowerShellGet -MinimumVersion $minimumRequiredPowerShellGetVersion -Global -Force + Import-Module -Name PowerShellGet -Force $currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion } Write-Verbose "The currently imported PowerShellGet module version is '$currentlyImportedVersion'." @@ -258,7 +258,7 @@ function Register-AzureArtifactsPSRepository 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 + Import-Module -Name PowerShellGet -Force } function Get-CurrentlyImportedPowerShellGetModuleVersion From 4bb96e26a1bbd8a3c3fbd67559e010a86f1ee72b Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 18:21:36 -0600 Subject: [PATCH 02/14] Import latest PowerShellGet module version --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index f40f0be..bf412f9 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -217,11 +217,7 @@ function Register-AzureArtifactsPSRepository [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 + $latestPowerShellGetVersionInstalled = Get-LatestPowerShellGetModuleVersionInstalled [bool] $minimumPowerShellGetVersionIsNotInstalled = ($latestPowerShellGetVersionInstalled -lt $minimumRequiredPowerShellGetVersion) if ($minimumPowerShellGetVersionIsNotInstalled) @@ -235,30 +231,41 @@ function Register-AzureArtifactsPSRepository Write-Information "The installed version '$latestPowerShellGetVersionInstalled' of the PowerShellGet module on computer '$computerName' satisfies the minimum required version of '$minimumRequiredPowerShellGetVersion'." } - Import-PowerShellGetModule -minimumRequiredPowerShellGetVersion $minimumRequiredPowerShellGetVersion + Import-LatestPowerShellGetModule -minimumRequiredPowerShellGetVersion $minimumRequiredPowerShellGetVersion } - function Import-PowerShellGetModule([System.Version] $minimumRequiredPowerShellGetVersion) + function Import-LatestPowerShellGetModule([System.Version] $latestPowerShellGetVersionInstalled) { $currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion [bool] $powerShellGetIsNotAlreadyImported = ($null -eq $currentlyImportedVersion) if ($powerShellGetIsNotAlreadyImported) { - Import-Module -Name PowerShellGet -Force + Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Force $currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion } Write-Verbose "The currently imported PowerShellGet module version is '$currentlyImportedVersion'." - [bool] $powerShellGetVersionImportedIsHighEnough = ($currentlyImportedVersion -ge $minimumRequiredPowerShellGetVersion) - if ($powerShellGetVersionImportedIsHighEnough) + [bool] $lastestModuleVersionIsImported = ($currentlyImportedVersion -ge $latestPowerShellGetVersionInstalled) + if ($lastestModuleVersionIsImported) { 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." + Write-Warning "The PowerShellGet module version currently imported is '$currentlyImportedVersion', which is less than the latest installed version '$minimumRequiredPowerShellGetVersion'. The current PowerShellGet module will be removed and the latest version imported." Remove-Module -Name PowerShellGet -Force - Import-Module -Name PowerShellGet -Force + Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Force + } + + 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 From 9759e469bb508f5f33606234e1810ec7c6077448 Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 18:29:33 -0600 Subject: [PATCH 03/14] Update log message --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index bf412f9..81b41fd 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -244,7 +244,7 @@ function Register-AzureArtifactsPSRepository Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Force $currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion } - Write-Verbose "The currently imported PowerShellGet module version is '$currentlyImportedVersion'." + Write-Verbose "The currently imported PowerShellGet module version is '$currentlyImportedVersion', and the lastest installed version is '$latestPowerShellGetVersionInstalled'." [bool] $lastestModuleVersionIsImported = ($currentlyImportedVersion -ge $latestPowerShellGetVersionInstalled) if ($lastestModuleVersionIsImported) From da12afd5bc58685e105420296cfa8cdf434eccd7 Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 18:29:52 -0600 Subject: [PATCH 04/14] Fix typo --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index 81b41fd..4c0cbb0 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -244,7 +244,7 @@ function Register-AzureArtifactsPSRepository Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Force $currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion } - Write-Verbose "The currently imported PowerShellGet module version is '$currentlyImportedVersion', and the lastest installed version is '$latestPowerShellGetVersionInstalled'." + Write-Verbose "The currently imported PowerShellGet module version is '$currentlyImportedVersion', and the latest installed version is '$latestPowerShellGetVersionInstalled'." [bool] $lastestModuleVersionIsImported = ($currentlyImportedVersion -ge $latestPowerShellGetVersionInstalled) if ($lastestModuleVersionIsImported) From b57a42e510e4808219fa9bd6adb59f2b98e96c3d Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 18:30:35 -0600 Subject: [PATCH 05/14] Fix typo --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index 4c0cbb0..0915b7b 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -246,8 +246,8 @@ function Register-AzureArtifactsPSRepository } Write-Verbose "The currently imported PowerShellGet module version is '$currentlyImportedVersion', and the latest installed version is '$latestPowerShellGetVersionInstalled'." - [bool] $lastestModuleVersionIsImported = ($currentlyImportedVersion -ge $latestPowerShellGetVersionInstalled) - if ($lastestModuleVersionIsImported) + [bool] $latestModuleVersionIsImported = ($currentlyImportedVersion -ge $latestPowerShellGetVersionInstalled) + if ($latestModuleVersionIsImported) { return } From b5fb1c2e4eec3c9c46b6aecfe9a63aa9ffbce5a0 Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 18:31:07 -0600 Subject: [PATCH 06/14] Fix refactor variable miss --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index 0915b7b..ae7cfe1 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -252,7 +252,7 @@ function Register-AzureArtifactsPSRepository return } - Write-Warning "The PowerShellGet module version currently imported is '$currentlyImportedVersion', which is less than the latest installed version '$minimumRequiredPowerShellGetVersion'. The current PowerShellGet module will be removed and the latest version imported." + 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 -Force } From 8bb2601d83bceedc9ec0ee3852097063b115cb3b Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 18:44:19 -0600 Subject: [PATCH 07/14] fix refactoring mistake --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index ae7cfe1..182e711 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -231,7 +231,7 @@ function Register-AzureArtifactsPSRepository Write-Information "The installed version '$latestPowerShellGetVersionInstalled' of the PowerShellGet module on computer '$computerName' satisfies the minimum required version of '$minimumRequiredPowerShellGetVersion'." } - Import-LatestPowerShellGetModule -minimumRequiredPowerShellGetVersion $minimumRequiredPowerShellGetVersion + Import-LatestPowerShellGetModule -latestPowerShellGetVersionInstalled $latestPowerShellGetVersionInstalled } function Import-LatestPowerShellGetModule([System.Version] $latestPowerShellGetVersionInstalled) From 2424d0e9413ac971182cfc4293ed4eaefe7636a1 Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 18:53:12 -0600 Subject: [PATCH 08/14] Add more logging --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index 182e711..211108a 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -255,6 +255,9 @@ function Register-AzureArtifactsPSRepository 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 -Force + + $currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion + Write-Verbose "The PowerShellGet module version now imported is '$currentlyImportedVersion'." } function Get-LatestPowerShellGetModuleVersionInstalled From 436b3c75ab20faafa599f9d03f9dce98b283080c Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 18:54:19 -0600 Subject: [PATCH 09/14] Import latest PowerShellGet module version everywhere --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index 211108a..22463ae 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -241,7 +241,7 @@ function Register-AzureArtifactsPSRepository [bool] $powerShellGetIsNotAlreadyImported = ($null -eq $currentlyImportedVersion) if ($powerShellGetIsNotAlreadyImported) { - Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Force + 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'." @@ -254,7 +254,7 @@ function Register-AzureArtifactsPSRepository 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 -Force + Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Global -Force $currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion Write-Verbose "The PowerShellGet module version now imported is '$currentlyImportedVersion'." From 3c47436acb63d70ff4b156930c21ad4eab01c057 Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 19:30:29 -0600 Subject: [PATCH 10/14] Always import latest powershell module version --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index 22463ae..def6f6f 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -241,7 +241,7 @@ function Register-AzureArtifactsPSRepository [bool] $powerShellGetIsNotAlreadyImported = ($null -eq $currentlyImportedVersion) if ($powerShellGetIsNotAlreadyImported) { - Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Global -Force + Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Force $currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion } Write-Verbose "The currently imported PowerShellGet module version is '$currentlyImportedVersion', and the latest installed version is '$latestPowerShellGetVersionInstalled'." @@ -254,7 +254,7 @@ function Register-AzureArtifactsPSRepository 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 + Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Force $currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion Write-Verbose "The PowerShellGet module version now imported is '$currentlyImportedVersion'." @@ -661,6 +661,8 @@ function Find-AzureArtifactsModule $AllowPrerelease ) + Install-AndImportPowerShellGet + [hashtable] $parametersWithCredentials = Get-PsBoundParametersWithCredential -parameters $PSBoundParameters Find-Module @parametersWithCredentials } @@ -779,6 +781,8 @@ function Install-AzureArtifactsModule $PassThru ) + Install-AndImportPowerShellGet -scope $Scope + [hashtable] $parametersWithCredentials = Get-PsBoundParametersWithCredential -parameters $PSBoundParameters Install-Module @parametersWithCredentials } @@ -864,6 +868,8 @@ function Update-AzureArtifactsModule $PassThru ) + Install-AndImportPowerShellGet -scope $Scope + [hashtable] $parametersWithCredentials = Get-PsBoundParametersWithCredential -parameters $PSBoundParameters Update-Module @parametersWithCredentials } From 87d254f46651b29417e751e96a51e79f2855a7cc Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 19:51:28 -0600 Subject: [PATCH 11/14] Import PowerShellGet at the Global scope --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index def6f6f..ed41d20 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -241,7 +241,7 @@ function Register-AzureArtifactsPSRepository [bool] $powerShellGetIsNotAlreadyImported = ($null -eq $currentlyImportedVersion) if ($powerShellGetIsNotAlreadyImported) { - Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Force + 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'." @@ -254,7 +254,7 @@ function Register-AzureArtifactsPSRepository 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 -Force + Import-Module -Name PowerShellGet -RequiredVersion $latestPowerShellGetVersionInstalled -Global -Force $currentlyImportedVersion = Get-CurrentlyImportedPowerShellGetModuleVersion Write-Verbose "The PowerShellGet module version now imported is '$currentlyImportedVersion'." From 4d264382da001b727a77806b2862d45d2ddaf4ae Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 20:02:41 -0600 Subject: [PATCH 12/14] refactor: Move functions to Global scope --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 154 +++++++++--------- 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index ed41d20..6dfdc1a 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -210,83 +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-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] $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 - } } } @@ -1055,6 +978,83 @@ 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] $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 +} + Export-ModuleMember -Function Find-AzureArtifactsModule Export-ModuleMember -Function Install-AzureArtifactsModule Export-ModuleMember -Function Install-AndUpdateAzureArtifactsModule From bac1bc525bf4119c23dea6ca6a1dba23f44f00e6 Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 20:20:26 -0600 Subject: [PATCH 13/14] Add debug logging --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index 6dfdc1a..7ee5ff4 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -706,6 +706,9 @@ function Install-AzureArtifactsModule Install-AndImportPowerShellGet -scope $Scope + $powerShellGetVersionsImported = Get-Module -Name PowerShellGet | Select-Object Version + Write-Verbose "About to run Install-Module. Current PowerShellGet versions imported are '$powerShellGetVersionsImported'." + [hashtable] $parametersWithCredentials = Get-PsBoundParametersWithCredential -parameters $PSBoundParameters Install-Module @parametersWithCredentials } @@ -1040,19 +1043,14 @@ function Get-LatestPowerShellGetModuleVersionInstalled function Get-CurrentlyImportedPowerShellGetModuleVersion { - [System.Version] $powerShellGetModuleVersionImported = $null + [System.Version] $lowestCurrentlyImportedModuleVersion = $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 + return $lowestCurrentlyImportedModuleVersion } Export-ModuleMember -Function Find-AzureArtifactsModule From 98949e10badece6e15b0fe7d027e4bf8bbd9de13 Mon Sep 17 00:00:00 2001 From: deadlydog Date: Thu, 15 Jul 2021 20:29:34 -0600 Subject: [PATCH 14/14] Add more debug logging --- .../AzureArtifactsPowerShellModuleHelper.psm1 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 index 7ee5ff4..8c67ef4 100644 --- a/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 +++ b/src/AzureArtifactsPowerShellModuleHelper/AzureArtifactsPowerShellModuleHelper.psm1 @@ -706,7 +706,7 @@ function Install-AzureArtifactsModule Install-AndImportPowerShellGet -scope $Scope - $powerShellGetVersionsImported = Get-Module -Name PowerShellGet | Select-Object Version + $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 @@ -796,6 +796,9 @@ function Update-AzureArtifactsModule 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 }