PSCoreUpdate
PSCoreUpdate copied to clipboard
New cross-platform PowerShell update tool.
PSCoreUpdate
New cross-platform PowerShell update tool.
Motivation
PSCoreUpdate supports automation update of new cross-platform PowerShell (pwsh).
Currently, PowerShell Team is planning on supporting security updates of PowerShell through Microsoft Update on Windows (#6118), but it will take some time for realization.
Homebrew Cask is now available on macOS, but the installation of Homebrew is a bit heavy.
PowerShell Team began supporting updates to PowerShell via Microsoft Update starting with PowerShell 7.2, but updates cannot be performed at any time, and there is no module that can manage release assets.
This module is a little tool to solve such inconvenience.
How to install
You can install it from PowerShell gallery.
# Using PowerShellGet
Install-Module PSCoreUpdate
# Using Microsoft.PowerShell.PSResourceGet
Install-PSResource -Name PSCoreUpdate
Upgrade from version 2
If you use PSCoreUpdate version 2 or earlier, please uninstall all version first.
Uninstall-Module PSCoreUpdate -AllVersions
Install-Module PSCoreUpdate
Note : PSCoreUpdate version.3 has many breaking changes.
- See the release note for detail.
First-time installation
This module is for updating PowerShell.
So, the first-time installation must be performed manually.
You can use the official installation script.
Invoke-Expression "& { $(Invoke-RestMethod 'https://aka.ms/install-powershell.ps1') } -UseMSI -Quiet"
Usage
Test-LatestVersion
Check if the current console is the latest version.
PS C:\> Test-LatestVersion
No updates. PowerShell 7.4.3 is the latest version.
If you use preview release PowerShell, you can use -Release Preview parameter.
PS C:\> Test-LatestVersion -Release Preview
if you use LTS version PowerShell, you can can use -Release LTS parameter.
PS C:\> Test-LatestVersion -Release LTS
Update-PowerShellRelease
Update PowerShell if the newer version found.
PS C:\> Update-PowerShellRelease -Latest

If you want to update preview release, you can use -Release Preview parameter.
PS C:\> Update-PowerShellRelease -Latest -Release Preview
if you use LTS version PowerShell, you can can use -Release LTS parameter.
PS C:\> Update-PowerShellRelease -Latest -Release LTS
You can do silent install with -Silent switch parameter.
PS C:\> Update-PowerShellRelease -Latest -Silent
- This cmdlet supports only Windows and macOS.
You can use a package management tool like yum, apt etc. on Linux.
Find-PowerShellRelease
Find PowerShell release information from GitHub.
[!NOTE]
This function uses GitHub REST API Version 2022-11-28.
PS C:\> Find-PowerShellRelease -MaxItems 10
Version Name Published PreRelease
------- ---- --------- ----------
7.4.3 v7.4.3 Release of PowerShell 2024/06/18 23:13:56 False
7.4.2 v7.4.2 Release of PowerShell 2024/04/11 23:07:12 False
7.4.1 v7.4.1 Release of PowerShell 2024/01/11 23:08:30 False
7.4.0 v7.4.0 Release of PowerShell 2023/11/16 17:06:48 False
7.3.12 v7.3.12 Release of PowerShell 2024/04/11 22:57:39 False
7.3.11 v7.3.11 Release of PowerShell 2024/01/11 22:01:05 False
7.3.10 v7.3.10 Release of PowerShell 2023/11/16 17:05:59 False
7.3.9 v7.3.9 Release of PowerShell 2023/10/26 17:57:23 False
7.3.8 v7.3.8 Release of PowerShell 2023/10/10 17:15:04 False
7.3.7 v7.3.7 Release of PowerShell 2023/09/19 16:28:10 False
New features from version.3
Find-PowerShellRelease stores local in-memory cache for 10 minutes.
If you don't want use cache, use -NoCache parameter.
Find-PowerShellRelease -MaxItems 10 -NoCache
-VersionRange parameter is added instead of -MinimumVersion, -MaximumVersion.
This parameter follows Nuget version range syntax.
PS C:\> Find-PowerShellRelease -VersionRange "[7.3,7.4]"
Version Name Published PreRelease
------- ---- --------- ----------
7.4.0 v7.4.0 Release of PowerShell 2023/11/16 17:06:48 False
7.3.12 v7.3.12 Release of PowerShell 2024/04/11 22:57:39 False
7.3.11 v7.3.11 Release of PowerShell 2024/01/11 22:01:05 False
7.3.10 v7.3.10 Release of PowerShell 2023/11/16 17:05:59 False
7.3.9 v7.3.9 Release of PowerShell 2023/10/26 17:57:23 False
7.3.8 v7.3.8 Release of PowerShell 2023/10/10 17:15:04 False
7.3.7 v7.3.7 Release of PowerShell 2023/09/19 16:28:10 False
7.3.6 v7.3.6 Release of PowerShell 2023/07/13 22:39:48 False
7.3.5 v7.3.5 Release of PowerShell 2023/06/27 23:21:50 False
7.3.4 v7.3.4 Release of PowerShell 2023/04/13 18:37:36 False
7.3.3 v7.3.3 Release of PowerShell 2023/02/24 1:22:55 False
7.3.2 v7.3.2 Release of PowerShell 2023/01/24 19:34:31 False
7.3.1 v7.3.1 Release of PowerShell 2022/12/13 16:17:08 False
7.3.0 v7.3.0 Release of PowerShell 2022/11/09 0:37:40 False
Find-PowerShellBuildStatus
Find PowerShell build status.
PS C:\> Find-PowerShellBuildStatus -All
Version Release ReleaseDate
------- ------- -----------
7.4.3 Stable 2024/06/18 23:26:06
7.5.0-preview.3 Preview 2024/05/28 18:13:56
7.4.3 LTS 2024/06/18 23:26:06
Find-PowerShellSupportStatus
Find PowerShell support status.
- Official information : PowerShell end-of-support dates
[!NOTE]
This function uses endoflife.date raw data on GitHub.
# Find all versions
PS C:\> Find-PowerShellSupportStatus
Version Is EOS EOS Date
------- ------- --------
7.4 False 2026/11/10
7.3 True 2024/05/08
7.2 False 2024/11/08
7.1 True 2022/05/08
7.0 True 2022/12/03
6.2 True 2020/09/04
6.1 True 2019/09/28
6.0 True 2019/02/13
# Find supported version only
PS C:\> Find-PowerShellSupportStatus -ExcludeEOS
Version Is EOS EOS Date
------- ------ --------
7.4 False 2026/11/10
7.2 False 2024/11/08
Save-PowerShellAsset
Download PowerShell release assets.
PS C:\> Save-PowerShellAsset -Latest -AssetType MSI_WIN64 -OutDirectory .\
The types of assets are as follows.
| Value | Asset |
|---|---|
| HASHES_SHA256 | hashes.sha256 |
| MSI_WIN32 | [PowerShell version]-win-x86.msi |
| MSI_WIN64 | [PowerShell version]-win-x64.msi |
| MSI_ARM64 | [PowerShell version]-win-arm64.msi |
| MSIXBUNDLE | [PowerShell version]-win.msixbundle |
| PKG_OSX | [PowerShell version]-osx-x64.pkg |
| PKG_OSXARM64 | [PowerShell version]-osx-arm64.pkg |
| RPM_CM | [PowerShell version]-cm.x86_64.rpm |
| RPM_CMARM64 | [PowerShell version]-cm.aarch64.rpm |
| RPM_RH | [PowerShell version]-rh.x86_64.rpm |
| DEB_DEB64 | [PowerShell version]-deb_amd64.deb |
| TAR_LINUXARM32 | [PowerShell version]-linux-arm32.tar.gz |
| TAR_LINUXARM64 | [PowerShell version]-linux-arm64.tar.gz |
| TAR_LINUXALPINE64 | [PowerShell version]-linux-(musl|alpine)-x64.tar.gz |
| TAR_LINUX64FXDEPENDENT | [PowerShell version]-linux-x64-fxdependent.tar.gz |
| TAR_LINUXALPINE64FXDEPENDENT | [PowerShell version]-x64-(musl-noopt|alpine)-fxdependent.tar.gz |
| TAR_LINUX64 | [PowerShell version]-linux-x64.tar.gz |
| TAR_OSX | [PowerShell version]-osx-x64.tar.gz |
| TAR_OSXARM64 | [PowerShell version]-osx-arm64.tar.gz |
| ZIP_WINARM64 | [PowerShell version]-win-arm64.zip |
| ZIP_WIN32 | [PowerShell version]-win-x86.zip |
| ZIP_WIN64 | [PowerShell version]-win-x64.zip |
| ZIP_WINFXDEPENDENT | [PowerShell version]-win-fxdependent.zip |
| ZIP_WINFXDEPENDENTDESKTOP | [PowerShell version]-win-fxdependentWinDesktop.zip |
Old release assets
- These assets are not available from the latest version.
| Value | Asset |
|---|---|
| MSIX_WIN32 | [PowerShell version]-win-x86.msix (Currently unreleased #13284) |
| MSIX_WIN64 | [PowerShell version]-win-x64.msix (Currently unreleased #13284) |
| MSIX_WINARM32 | [PowerShell version]-win-arm32.msix (Currently unreleased #13284) |
| MSIX_WINARM64 | [PowerShell version]-win-arm64.msix (Currently unreleased #13284) |
| PKG_OSX1011 | [PowerShell version]-osx.10.11-x64.pkg |
| PKG_OSX1012 | [PowerShell version]-osx.10.12-x64.pkg |
| RPM_RHEL8 | [PowerShell version]-centos.8.x86_64.rpm |
| RPM_RHEL7 | [PowerShell version]-rhel.7.x86_64.rpm |
| DEB_DEBIAN8 | [PowerShell version]-debian.8_amd64.deb |
| DEB_DEBIAN9 | [PowerShell version]-debian.9_amd64.deb |
| DEB_DEBIAN10 | [PowerShell version]-debian.10_amd64.deb |
| DEB_DEBIAN11 | [PowerShell version]-debian.11_amd64.deb |
| DEB_UBUNTU14 | [PowerShell version]-ubuntu.14.nn_amd64.deb |
| DEB_UBUNTU16 | [PowerShell version]-ubuntu.16.nn_amd64.deb |
| DEB_UBUNTU17 | [PowerShell version]-ubuntu.17.nn_amd64.deb |
| DEB_UBUNTU18 | [PowerShell version]-ubuntu.18.nn_amd64.deb |
| DEB_UBUNTU20 | [PowerShell version]-ubuntu.20.nn_amd64.deb |
| APPIMAGE | [PowerShell version]-x86_64.AppImage |
| WIXPDB32 | [PowerShell version]-win-x86.wixpdb |
| WIXPDB64 | [PowerShell version]-win-x64.wixpdb |
| ZIP_WINARM32 | [PowerShell version]-win-arm32.zip (Removed in PowerShell 7.4 Preview.5 #20102) |