Last active
January 24, 2019 02:30
-
-
Save pldmgg/b8db54742d511bd7d8d5742d539ebbe1 to your computer and use it in GitHub Desktop.
Update-PackageManagement_PowerShellCore_Errors
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function Check-Elevation { | |
if ($PSVersionTable.PSEdition -eq "Desktop" -or $PSVersionTable.Platform -eq "Win32NT") { | |
[System.Security.Principal.WindowsPrincipal]$currentPrincipal = New-Object System.Security.Principal.WindowsPrincipal( | |
[System.Security.Principal.WindowsIdentity]::GetCurrent() | |
) | |
[System.Security.Principal.WindowsBuiltInRole]$administratorsRole = [System.Security.Principal.WindowsBuiltInRole]::Administrator | |
if($currentPrincipal.IsInRole($administratorsRole)) { | |
return $true | |
} | |
else { | |
return $false | |
} | |
} | |
if ($PSVersionTable.Platform -eq "Unix") { | |
if ($(whoami) -eq "root") { | |
return $true | |
} | |
else { | |
return $false | |
} | |
} | |
} | |
$PackageManagementLatestLocallyAvailableVersion = $($(Get-Module -ListAvailable | Where-Object {$_.Name -eq "PackageManagement"}).Version | Measure-Object -Maximum).Maximum | |
$PowerShellGetLatestLocallyAvailableVersion = $($(Get-Module -ListAvailable | Where-Object {$_.Name -eq "PowerShellGet"}).Version | Measure-Object -Maximum).Maximum | |
# Update PackageManagement and PowerShellGet if they're not the latest | |
[version]$MinimumVer = "1.0.0.1" | |
$PackageManagementLatestVersion = $(Find-Module PackageManagement).Version | |
$PowerShellGetLatestVersion = $(Find-Module PowerShellGet).Version | |
Write-Host "PackageManagement Latest Version is: $PackageManagementLatestVersion" | |
Write-Host "PowerShellGetLatestVersion Latest Version is: $PowerShellGetLatestVersion" | |
if ($PackageManagementLatestVersion -gt $PackageManagementLatestLocallyAvailableVersion -and $PackageManagementLatestVersion -gt $MinimumVer) { | |
if ($PSVersionTable.PSVersion.Major -lt 5) { | |
Write-Host "`nUnable to update the PackageManagement Module beyond $($MinimumVer.ToString()) on PowerShell versions lower than 5." | |
} | |
if ($PSVersionTable.PSVersion.Major -ge 5) { | |
#Install-Module -Name "PackageManagement" -Scope CurrentUser -Repository PSGallery -RequiredVersion $PackageManagementLatestVersion -Force | |
if (Check-Elevation) { | |
Write-Host "Installing latest version of PackageManagement..." | |
Install-Module -Name "PackageManagement" -Force | |
} | |
else { | |
Write-Error "Please run the Update-PackageManagement function in an elevated PowerShell Session. Halting!" | |
$global:FunctionResult = "1" | |
return | |
} | |
} | |
} | |
if ($PowerShellGetLatestVersion -gt $PowerShellGetLatestLocallyAvailableVersion -and $PowerShellGetLatestVersion -gt $MinimumVer) { | |
# Unless the force parameter is used, Install-Module will halt with a warning saying the 1.0.0.1 is already installed | |
# and it will not update it. | |
#Install-Module -Name "PowerShellGet" -Scope CurrentUser -Repository PSGallery -RequiredVersion $PowerShellGetLatestVersion -Force -WarningAction "SilentlyContinue" | |
Write-Host "Installing latest version of PowerShellGet..." | |
if (Check-Elevation) { | |
#Install-Module -Name "PowerShellGet" -RequiredVersion $PowerShellGetLatestVersion -Force | |
Install-Module -Name "PowerShellGet" -Force | |
} | |
else { | |
Write-Error "Please run the Update-PackageManagement function in an elevated PowerShell Session. Halting!" | |
$global:FunctionResult = "1" | |
return | |
} | |
} | |
# Reset the LatestLocallyAvailableVersion variables to reflect latest available, and then load them into the current session | |
$PackageManagementLatestLocallyAvailableVersion = $($(Get-Module -ListAvailable | Where-Object {$_.Name -eq "PackageManagement"}).Version | Measure-Object -Maximum).Maximum | |
$PowerShellGetLatestLocallyAvailableVersion = $($(Get-Module -ListAvailable | Where-Object {$_.Name -eq "PowerShellGet"}).Version | Measure-Object -Maximum).Maximum | |
$CurrentlyLoadedPackageManagementVersion = $(Get-Module | Where-Object {$_.Name -eq 'PackageManagement'}).Version | |
$CurrentlyLoadedPowerShellGetVersion = $(Get-Module | Where-Object {$_.Name -eq 'PowerShellGet'}).Version | |
Write-Host "Currently loaded PackageManagement version is $CurrentlyLoadedPackageManagementVersion" | |
Write-Host "Currently loaded PowerShellGet version is $CurrentlyLoadedPowerShellGetVersion" | |
if ($CurrentlyLoadedPackageManagementVersion -lt $PackageManagementLatestLocallyAvailableVersion) { | |
# Need to remove PowerShellGet first since it depends on PackageManagement | |
Write-Host "Removing Module PowerShellGet $CurrentlyLoadedPowerShellGetVersion ..." | |
Remove-Module -Name "PowerShellGet" | |
Write-Host "Removing Module PackageManagement $CurrentlyLoadedPackageManagementVersion ..." | |
Remove-Module -Name "PackageManagement" | |
if ($(Get-Host).Name -ne "Package Manager Host") { | |
Write-Host "We are NOT in the Visual Studio Package Management Console. Continuing..." | |
# Need to Import PackageManagement first since it's a dependency for PowerShellGet | |
Write-Host "Importing PackageManagement Version $PackageManagementLatestLocallyAvailableVersion ..." | |
Import-Module "PackageManagement" -RequiredVersion $PackageManagementLatestLocallyAvailableVersion | |
Write-Host "Importing PowerShellGet Version $PowerShellGetLatestLocallyAvailableVersion ..." | |
Import-Module "PowerShellGet" -RequiredVersion $PowerShellGetLatestLocallyAvailableVersion | |
} | |
if ($(Get-Host).Name -eq "Package Manager Host") { | |
Write-Host "We ARE in the Visual Studio Package Management Console. Continuing..." | |
# Need to Import PackageManagement first since it's a dependency for PowerShellGet | |
Write-Host "Importing PackageManagement Version $PackageManagementLatestLocallyAvailableVersion`nNOTE: Module Members will have with Prefix 'PackMan' - Example: Get-PackManPackage" | |
Import-Module "PackageManagement" -RequiredVersion $PackageManagementLatestLocallyAvailableVersion -Prefix PackMan | |
Write-Host "Importing PowerShellGet Version $PowerShellGetLatestLocallyAvailableVersion`nNOTE: Module Members will have with Prefix 'PSGet' - Example: Find-PSGetModule" | |
Import-Module "PowerShellGet" -RequiredVersion $PowerShellGetLatestLocallyAvailableVersion -Prefix PSGet | |
} | |
} | |
# Reset CurrentlyLoaded Variables | |
$CurrentlyLoadedPackageManagementVersion = $(Get-Module | Where-Object {$_.Name -eq 'PackageManagement'}).Version | |
$CurrentlyLoadedPowerShellGetVersion = $(Get-Module | Where-Object {$_.Name -eq 'PowerShellGet'}).Version | |
Write-Host "Currently loaded PackageManagement version is $CurrentlyLoadedPackageManagementVersion" | |
Write-Host "Currently loaded PowerShellGet version is $CurrentlyLoadedPowerShellGetVersion" | |
if ($CurrentlyLoadedPowerShellGetVersion -lt $PowerShellGetLatestLocallyAvailableVersion) { | |
Write-Host "Removing Module PowerShellGet $CurrentlyLoadedPowerShellGetVersion ..." | |
Remove-Module -Name "PowerShellGet" | |
if ($(Get-Host).Name -ne "Package Manager Host") { | |
Write-Host "We are NOT in the Visual Studio Package Management Console. Continuing..." | |
Write-Host "Importing PowerShellGet Version $PowerShellGetLatestLocallyAvailableVersion ..." | |
Import-Module "PowerShellGet" -RequiredVersion $PowerShellGetLatestLocallyAvailableVersion | |
} | |
if ($(Get-Host).Name -eq "Package Manager Host") { | |
Write-Host "We ARE in the Visual Studio Package Management Console. Continuing..." | |
Write-Host "Importing PowerShellGet Version $PowerShellGetLatestLocallyAvailableVersion`nNOTE: Module Members will have with Prefix 'PSGet' - Example: Find-PSGetModule" | |
Import-Module "PowerShellGet" -RequiredVersion $PowerShellGetLatestLocallyAvailableVersion -Prefix PSGet | |
} | |
} | |
# Make sure all Repos Are Trusted | |
if ($PSVersionTable.PSEdition -eq "Desktop" -or $PSVersionTable.Platform -eq "Win32NT") { | |
$BaselineRepoNames = @("Chocolatey","nuget.org","PSGallery") | |
} | |
if ($PSVersionTable.Platform -eq "Unix") { | |
$BaselineRepoNames = @("nuget.org","PSGallery") | |
} | |
$RepoObjectsForTrustCheck = Get-PackageSource | Where-Object {$_.Name -match "$($BaselineRepoNames -join "|")"} | |
foreach ($RepoObject in $RepoObjectsForTrustCheck) { | |
if ($RepoObject.IsTrusted -ne $true) { | |
Set-PackageSource -Name $RepoObject.Name -Trusted | |
} | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PS C:\Users\zeroadmin> C:\Scripts\powershell\Sanitized-UpdatePackageManagement.ps1 | |
PackageManagement Latest Version is: 1.1.6.0 | |
PowerShellGetLatestVersion Latest Version is: 1.1.3.2 | |
Installing latest version of PackageManagement... | |
Currently loaded PackageManagement version is 1.1.4.0 | |
Currently loaded PowerShellGet version is 1.1.3.2 | |
Removing Module PowerShellGet 1.1.3.2 ... | |
Removing Module PackageManagement 1.1.4.0 ... | |
We are NOT in the Visual Studio Package Management Console. Continuing... | |
Importing PackageManagement Version 1.1.6.0 ... | |
Import-Module : Assembly with same name is already loaded | |
At C:\program files\powershell\6.0.0-beta.6\Modules\PackageManagement\1.1.6.0\PackageManagement.psm1:45 char:17 | |
+ $OneGetModule = Import-Module -Name $OneGetModulePath -PassThru | |
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
+ CategoryInfo : NotSpecified: (:) [Import-Module], FileLoadException | |
+ FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell.Commands.ImportModuleCommand | |
Import-Module : Assembly with same name is already loaded | |
At C:\program files\powershell\6.0.0-beta.6\Modules\PackageManagement\1.1.6.0\PackageManagement.psm1:46 char:19 | |
+ $PSOneGetModule = Import-Module -Name $PSOneGetModulePath -PassThru | |
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
+ CategoryInfo : NotSpecified: (:) [Import-Module], FileLoadException | |
+ FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell.Commands.ImportModuleCommand | |
The variable '$OneGetModule' cannot be retrieved because it has not been set. | |
At C:\program files\powershell\6.0.0-beta.6\Modules\PackageManagement\1.1.6.0\PackageManagement.psm1:50 char:4 | |
+ if($OneGetModule) | |
+ ~~~~~~~~~~~~~ | |
+ CategoryInfo : InvalidOperation: (OneGetModule:String) [], RuntimeException | |
+ FullyQualifiedErrorId : VariableIsUndefined | |
The variable '$PSOneGetModule' cannot be retrieved because it has not been set. | |
At C:\program files\powershell\6.0.0-beta.6\Modules\PackageManagement\1.1.6.0\PackageManagement.psm1:57 char:4 | |
+ if($PSOneGetModule) | |
+ ~~~~~~~~~~~~~~~ | |
+ CategoryInfo : InvalidOperation: (PSOneGetModule:String) [], RuntimeException | |
+ FullyQualifiedErrorId : VariableIsUndefined | |
Importing PowerShellGet Version 1.1.3.2 ... | |
Currently loaded PackageManagement version is 1.1.6.0 | |
Currently loaded PowerShellGet version is 1.1.3.2 | |
Get-PackageSource : The term 'Get-PackageSource' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of | |
the name, or if a path was included, verify that the path is correct and try again. | |
At C:\Scripts\powershell\Sanitized-UpdatePackageManagement.ps1:140 char:29 | |
+ $RepoObjectsForTrustCheck = Get-PackageSource | Where-Object {$_.Name ... | |
+ ~~~~~~~~~~~~~~~~~ | |
+ CategoryInfo : ObjectNotFound: (Get-PackageSource:String) [], CommandNotFoundException | |
+ FullyQualifiedErrorId : CommandNotFoundException |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment