PowerShellはWindowsOSに標準搭載されていますが、最新版のPowerShellは別途、インストールしなければ使うことはできません。
一般的なアプリのように、プリインストールされたPowerShellをバージョンアップで最新版にすることはできないのです。新機能の実装や性能向上などのアップデートは、最新版のPowerShellに提供されますので、PowerShellの既存ユーザーやこれから活用することを考えているユーザーは、最新版のPowerShellをインストールしましょう。
この記事では、執筆時点の最新版PowerShell7のインストール方法と合わせて、新機能や活用例についても説明します。
PowerShell7のインストールを行う前に、Powershell7の概要を理解しておきましょう。大まかに、WindowsにプリインストールされているPowerShellとの違いは何のか、互換性はあるのか。
この章で解説します。
PowerShellには、主にWindowsにプリインストールされている「Windows PowerShell」と、マルチプラットフォームに対応した「PowerShell Core」の2種類があります。
Windows PowerShellは、Microsoftによって開発されたコマンドラインシェルおよびスクリプティング言語で、2006年にリリースされました。
このバージョンは.NET Frameworkに基づいており、Windowsオペレーティングシステム専用に設計されています。
Windowsにプリインストールされているバージョンが、Windows PowerShellです。
PowerShell Coreは、Windows PowerShellの後継として開発されたバージョンで、2016年にリリースされました。
このバージョンはオープンソースプロジェクトとしてGitHub上で公開され、.NET Coreをベースにしています。PowerShell Coreの最大の特徴は、クロスプラットフォームに対応したことです。WindowsだけでなくLinuxやmacOS上でも実行できるようになりました。
PowerShell Coreは当初、PowerShell6.xとしてリリースされましたが、2020年に直接の後継版のPowerShell7がリリースされました。PowerShell7は、.NET Core3.1をベースにしています。
Windowsにプリインストールされているバージョンとは異なりますので、利用する際にはインストールが必要になります。
PowerShell7は、Windows PowerShellと異なる環境で開発されていますが、両者には高い互換性があります。
これは、PowerShell7が.NET Core 3.1をベースにしつつ、Windows PowerShellで使われているコマンドレットやモジュールとの互換性を保つために開発されているからです。
Windows PowerShellで作成した多くのスクリプトやモジュールは、修正を加えることなくPowerShell7上でも動作します。
ただし、一部のWindows PowerShellモジュールやスクリプトは、.NET CoreのAPIの違いにより、PowerShell7で正常に動作しない場合があります。
PowerShell7へ完全に移行する際には、既存のコードベースをテストし、必要に応じて修正を行いましょう。
Microsoft公式:Windows PowerShellの互換性
PowerShell7をインストールする手段は複数存在します。Microsoftの公式ページでも5つの方法が案内されていますが、この記事ではMicrosoftが推奨している方法を含め、比較的、簡単に実施できる3つの方法を紹介します。
PowerShell7は.NET Core 3.1を基盤としているため、.NET Core 3.1がサポートするすべてのプラットフォームで動作します。
一般的には、最新またはそれに近いオペレーティングシステムのバージョン(Windows 10、最新のmacOS、主要なLinuxディストリビューション)であれば、特に問題なくPowerShell7をインストールすることができます。
ただし、特定の機能やモジュールを必要とする場合には、公式ドキュメントを参照しておきましょう。
Microsoft公式:PowerShellドキュメント
ここではWindowへのPowerShell7インストール方法を紹介します。
Microsoftの公式ページで推奨されている方法がWingetを使ったインストールです。プリインストールされているWindows PowerShellでコマンドを実行することで、PowerShell7をインストールすることができます。
なお、WindowsOSの32ビット・64ビットは自動的に判別されますので、アーキテクチャに詳しくなくても簡単にインストールできます。
①Windows PowerShellで下記のコマンドを実行
winget search Microsoft.PowerShell
②PowerShellから下記の情報が出力される
Name Id Version Source
-----------------------------------------------------------------
PowerShell Microsoft.PowerShell 7.4.1.0 winget
PowerShell Preview Microsoft.PowerShell.Preview 7.4.0.101 winget
③最後に下記のコマンドを実行
winget install --id Microsoft.Powershell --source winget
プレビュー版をインストールする場合は下記のコマンドを実行
winget install –id Microsoft.Powershell.Preview –source winget
PowerShellはGithubのPowerShellリリースページからインストールすることができますが、Githubのページは専門性が高く煩雑なため、Microsoftの公式ページのリンクを使うとスムーズです。
下記のページから、Windows32ビット(x86)またはWindows64ビット(x64)のダウンロードパッケージをインストールすることができます。
お使いのPCが32ビットか64ビットかを調べる方法はGUI操作でも可能ですが、PowerShellで下記のコマンドを実行すると簡単に調べることができます。
wmic os get osarchitecture
PowerShell7はWindowsに標準搭載されているMicrosoftStoreからもインストールすることが可能です。
初心者にとっても簡単で手軽な方法ではありますが、一部、制限事項が発生します。PowerShellの一般的なユーザーであれば支障はないと想定されますが、詳しくはMicrosoftの公式ページを参照ください。
Microsoft:PowerShellインストール(MicrosoftStore)
以上が、WindowsにPowerShell7をインストールする3つの方法です。より詳細な情報が必要であれば、Microsoftの公式ページを参照ください。
Microsoft:WindowsへのPowerShellインストール
この章では、PowerShell7の新機能や活用例について紹介します。どちらもPowerShell7の新機能の一部抜粋のため、詳細はMicrosoft公式ページを参照ください。
PowerShell7は、Windows PowerShellから大幅な変更点はありませんが、ユーザーフィードバックによって改善や修正が実施されています。
また、PowerShell7のバージョンを重ねるごとに、いくつかの新機能が搭載されています。
たとえば、ForEach-Object -Parallel
を用いた並列処理が実行可能になりました。時間がかかる処理を並行して実行することで全体の処理時間を短縮することが可能です。
その他、新しい演算子として、三項演算子 a ? b : c
、パイプライン チェーン演算子 ||
&&
、null 条件演算:??
??=
も使えるようになり、スクリプトの記述が簡潔になりました。新しい演算子によって、コードの可読性と保守性が向上しています。
詳しくは、Microsoftの公式ページを参照ください。
Microsoft:Windows PowerShell 5.1 と PowerShell 7.x の相違点
PowerShell 7では、並列処理や新しい演算子など、多くの新機能が導入されています。これらの機能を使った使用例を下記で紹介します。
PowerShell7では、ForEach-Object
コマンドレットに -Parallel
パラメータが追加され、スクリプトブロック内のコードを並列に実行できるようになりました。そのため、多数のタスクを効率的に並列処理できます。
下記の例では、1から10までの数値それぞれに対して2乗を計算し、-ThrottleLimit
パラメータで同時に実行されるタスクの最大数を5に制限しています。
# 1から10までの数字に対して、それぞれ2乗の計算を並列に実行する例
1..10 | ForEach-Object -Parallel { $_ * $_ } -ThrottleLimit 5
PowerShell7では、新しい演算子が複数追加されました。たとえば、Null合体演算子 ??
と、Null条件代入演算子 ??=
です。
Null合体演算子 ??
は、左側のオペランドが $null
でない場合はその値を返し、$null
の場合は右側のオペランドの値を返します。
# $null でない場合、左側の値を返す
$value = $null
$result = $value ?? "デフォルト値"
Write-Output $result # "デフォルト値" を出力
Null条件代入演算子 ??=
は、変数が $null
の場合にのみ値を代入します。
# $variable が $null の場合にのみ値を代入
$variable = $null
$variable ??= "新しい値"
Write-Output $variable # "新しい値" を出力
今回は、Windows PowerShellとPowerShell Coreの違いや、最新のPowerShell7をインストールする方法について記事にしました。
PowerShellは、システム管理者や開発者に適したツールのため、インストール方法も新機能も少し専門性が高いと感じるかもしれませんが、これからPowerShellに慣れていきたい方は、ぜひ最新版のPowerShell7を入手してください。
当サイトでは引き続き、PowerShell関連の情報を発信していきます。