個人的な不便さからPowerShell Coreのアップデートを自動化するためのモジュールを作りました。
ソースと基本的な使い方はGitHubに上げています。
作った動機
現在、Windows環境においては一度インストールしたPowerShell Core 6.0のアップデートを自動で行う方法は無く、毎回新しいインストーラを手動でダウンロードして実行しなおす必要があります。
一応Office等のMicrosoft製ソフトと同様にMicrosoft Update経由での自動アップデートに対応する計画が立てられている(#6118)のですが、実現までにはまだまだ時間がかかりそうです。
また、MacOS環境においてはHomebrew Caskによる更新が可能ですが、そもそも論としてHomebrewのインストール自体が割と手間なためHomebrewに頼らない更新方法が欲しかったというのもあります。
インストール方法
PowerShell Galleryからインストール可能です。
Install-Module PSCoreUpdate -Scope CurrentUser
なお、このモジュールはあくまで更新のためのツールなので最初にPowerShell Core 6.0をインストールするのは手動で行う必要があります。
使い方
このモジュールには4つのコマンドがあり、各コマンドの使い方をざっくり説明していきます。
Update-PowerShellCore
新しいバージョンのPowerShell Coreがリリースされている場合、インストーラーのダウンロードと自動実行を行います。
Windowsの場合はMSIファイル、MacOSの場合はPKGファイルをダウンロードして実行します。
新しいバージョンが無い場合は何もしませんが、-Force
パラメーターを指定することで過去バージョンのインストールを強制することも可能です。
# 実行例 Update-PowerShellCore -Latest
実行イメージはこんな感じです。
-Silent
パラメーターを指定することでサイレントインストールにすることも可能です。
# 実行例 Update-PowerShellCore -Latest -Silent
なお、このコマンドはWindowsとMacOS専用です。
Linux環境においてはAptやYum等の標準のパッケージ管理ツールで十分との判断をしています。
Test-LatestVersion
現在のコンソールが最新バージョンかを判定します。
# 実行例 Test-LatestVersion
最新バージョンの場合
最新バージョンでない場合
Find-PowerShellCore
GitHubからPowerShell Coreのリリース情報を取得します。
パラメーターによるバージョン指定も可能です。
# 実行例 Find-PowerShellCore -Latest
内部的にはGitHub REST APIを使っており、使用回数にレートリミットが設けれられています。
通常であれば問題にならないはずですが、レートリミットに引っかかる様な場合は-Token
パラメーターにアクセストークンを指定することで回避可能にしています。
# 実行例 Find-PowerShellCore -Latest -Token $env:GITHUB_ACCESS_TOKEN
Save-PowerShellCore
PowerShell Coreのリリースアセット(MSIファイルなど)をダウンロードします。
Download-PowerShellCore
にエイリアスしています。
Save-PowerShellCore -Latest -AssetType MSI_WIN64 -OutDirectory C:\Temp
アセットの種類は以下となっています。
種類 | 内容 |
---|---|
MSI_WIN32 | [PowerShell version]-win-x86.msi |
MSI_WIN64 | [PowerShell version]-win-x64.msi |
PKG_OSX1011 | [PowerShell version]-osx.10.11-x64.pkg |
PKG_OSX1012 | [PowerShell version]-osx.10.12-x64.pkg |
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_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 |
APPIMAGE | [PowerShell version]-x86_64.AppImage |
TAR_LINUXARM32 | [PowerShell version]-linux-arm32.tar.gz |
TAR_LINUX64 | [PowerShell version]-linux-x64.tar.gz |
TAR_OSX | [PowerShell version]-osx-x64.tar.gz |
ZIP_WINARM32 | [PowerShell version]-win-arm32.zip |
ZIP_WINARM64 | [PowerShell version]-win-arm64.zip |
ZIP_WIN32 | [PowerShell version]-win-x86.zip |
ZIP_WIN64 | [PowerShell version]-win-x64.zip |
【2018/04/23追記】 初期セットアップスクリプト
初期セットアップスクリプトを作りました。
詳しくは下記エントリをご覧ください。