PowerShell 7

目次
はじめに
PowerShell 7 は、Microsoft が開発したクロスプラットフォーム対応のシェル兼スクリプト言語です。従来の Windows PowerShell(5.1)とは異なり、.NET Core(現在 1 は .NET 8/9)をベースにしており、Windows、Linux、macOS で動作します。
PowerShell 7 は 5.1 と比較して多くの改善点があります。
- クロスプラットフォーム対応
Windows 以外の OS でも動作 - パフォーマンスの向上
大量データ処理の高速化 2 - 新しい言語機能
ForEach-Object -Parallel
による並列処理に対応- 三項演算子:
$condition ? $true : $false
の構文をサポート - Null 条件演算子:
?.
、Null 合体演算子:??
演算子の追加
C# でよく使う三項演算子や Null 条件演算子に対応したので、 よりコンパクトなスクリプトを書きやすくなっています。
.NET 8 にも対応していますので、遅ればせながら私の端末にもインストールしてみることにしました。
PowerShell 7 のインストール
PowerShell 7 のインストールには winget
3 を使用します。
winget install --id Microsoft.PowerShell --source winget
インストールは以上で完了です。
PowerShell を起動して、バージョンを確認してみましょう。
PS C:\hoge> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 26100 6584
あれ?おかしいですね(;^_^A
実は PowerShell 7 は Windows PowerShell 5.1 とは別アプリケーションとしてインストールされます。つまり、インストールしても元から入っていた PowerShell(powershell.exe)は 5.1 のままで変わりません。
PowerShell 7 は pwsh.exe という名前でインストールされ、通常は以下のパスに配置されます:
C:\Program Files\PowerShell\7\pwsh.exe
PowerShell 5.1 と 7.x のインストールパスの違いは以下になります。
バージョン | 実行ファイル名 | 既定の場所 |
---|---|---|
PowerShell 5.1 | powershell.exe | C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe |
PowerShell 7.x | pwsh.exe | C:\Program Files\PowerShell\7\pwsh.exe |
以降では、PowerShell 7 を実行する方法について説明していきます。
PowerShell 7 を起動する方法
PowerShell 7 を直接起動する
- スタートメニューで「PowerShell 7」または「pwsh」と検索して実行
Win
+R
→pwsh
と入力して実行- コマンドプロンプト、PowerShell のプロンプトで
pwsh
と入力して実行
ターミナル(Windows Terminal)の設定を変更する
ターミナルの 既定のプロファイル
を変更することで、ターミナル起動時に自動的に PowerShell 7 を起動するように設定できます。
1ターミナルを起動し、ウィンドウ上部の ▼
> 設定
(図1)
2既定のプロファイル
(図2) > PowerShell
を選択(図3)
※ Windows PowerShell
は PowerShell 5.1、PowerShell
が PowerShell 7 になります。
3保存
ボタンを押して設定を保存します(図4)。
これでターミナルの次回起動から PowerShell 7 が起動されるようになります。
Visual Studio Code で実行する PowerShell を 7 にする
Visual Studio Code のターミナルで実行する PowerShell を PowerShell 7 に変更するには以下の手順を行います。
- PowerShell 拡張機能(@microsoft.com)をインストール
Ctrl + Shift + P
>Preferences: Open User Settings (JSON)
でユーザー設定ファイルを開く- 設定ファイルの末尾に以下を追記して保存
"terminal.integrated.profiles.windows": {
"PowerShell 7": {
"path": "C:\\Program Files\\PowerShell\\7\\pwsh.exe"
}
},
"terminal.integrated.defaultProfile.windows": "PowerShell 7"
- ターミナルを起動して確認
ターミナルの起動時に右上にpwsh
と表示されれば、変更は適用されています。
念のために$PSVersionTable.PSVersion
でバージョンを確認してみましょう。 図5
Visual Studio Code 向けの設定は以上です。
Visual Studio 2022 で実行する PowerShell を 7 にする
Visual Studio 2022 で実行する PowerShell のバージョンを 7 にするにはオプションから設定を変更します。
ツール > オプション > 環境 > ターミナル > 開発者用 PowerShell
「シェルの場所」を
C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
から
C:\Program Files\PowerShell\7\pwsh.exe
に変更します(図6)。
Linux(WSL)で PowerShell 7 を使用する
PowerShell 7 はクロスプラットフォームに対応しています。
WSL(Ubuntu Linux)環境で PowerShell 7 を動かしてみましょう。
インストール
1前準備
前準備として WSL(Ubuntu)のバージョンを確認しておきます。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
私の Ubuntu は 22.04
でした。
2Microsoft のリポジトリを追加
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
ubuntu/22.04
の箇所は OS / バージョンに合わせて変更してください。
3PowerShell 7 をインストール
sudo apt-get install -y powershell
PowerShell 7 の実行
Windows 版と同じく実行形式ファイルの名前は pwsh
です。
pwsh
$ pwsh
PowerShell 7.5.3
PS /mnt/c/hoge>
PowerShell が起動しました。 起動時にバージョン番号は表示されていますが、改めてコマンドレットでバージョンを確認してみましょう。
PS /mnt/c/hoge> $PSVersionTable.PSVersion
Major Minor Patch PreReleaseLabel BuildLabel
----- ----- ----- --------------- ----------
7 5 3
表示されました。
Windows 版と同様にコマンドレットの自動補完も動作します。
まとめ
PowerShell 7 の紹介から、インストール方法、Windows のターミナルや Visual Studio Code の PowerShell を 7 に変更する手順などを紹介してきました。Linux でも使用できますので、シェルスクリプトは PowerShell で統一、というのも一つの選択肢になりそうです。