PowerShell 7.0.0 Preview 3がリリースされました
2019年8月20日、「PowerShell 7.0.0 Preview 3」がリリースされました。Preview版は安定版ではありません。
安定版のリリースに向け、継続的に作業が行われていきます。
また以前紹介したように今まで「PowerShell Core」という名称でしたが、「PowerShell 7」から「Core」が削除され「PowerShell」になります。
リリース情報
リリースアナウンス:PowerShell 7 Preview 3リリースノート:v7.0.0-preview.3 Release of PowerShell Core
deb版PowerShell PreviewがサポートするUbuntuのバージョン
deb版「PowerShell 7.0.0 Preview 3」は、以下の「Ubuntu」のバージョンで利用できます。- Ubuntu 16.04 LTS
- Ubuntu 18.04 LTS
いずれも64bit版(amd64)が対象です。
「Ubuntu 19.04」など上記以外のバージョンで「PowerShell Preview」を利用したい場合は、Snap版「PowerShell Preview」の利用を検討してください。
PowerShell Preview 3へアップデートするには
deb版PowerShell Previewを利用している場合
すでにdeb版「PowerShell Preview」をインストールしているユーザーは、「ソフトウェアの更新」からアップデートできます。Snap版PowerShell Previewを利用している場合
すでにSnap版「PowerShell Preview」をインストールしているユーザーは、アップデートが提供され次第、自動的にアップデートされます。PowerShell Previewをインストールするには
deb版PowerShell Previewをインストールするには
deb版「PowerShell Preview」をインストールする方法は、以下を参照してください。次回以降「ソフトウェアの更新」からアップデートできるようになります。
Snap版PowerShell Previewをインストールするには
Snap版「PowerShell Preview」は、以下からインストールできます。PowerShell 7.0.0 Preview 3の新機能と変更点
PowerShell 7.0.0 Preview 3の新機能と変更点を紹介します。詳細な内容はリリースアナウンスを参照してください。
GA(Generally Available)& LTS(Long Term Servicing)
「GA(Generally Available)」はいわゆる安定版のことです。「PowerShell 7.0.0 GA」は、2019年末にリリースが予定されています。
また「PowerShell 7」は初の「LTS(Long Term Servicing)」リリースになり、「.NET Core 3.1」のサポート期間と同様のサポート期間が提供される予定です。
Windows PowerShellとの互換性
「PowerShell 7」の目標の1つは、「Windows PowerShell 5.1」の置き換えを実現することです。「PowerShell 7.0.0 Preview 3」は「.NET Core」と「.NET Framework」との差異を埋めるため、「.NET Core 3.0 Preview 8」上で構築されています。
「.NET Core 3.0」では数多くの「.NET Framework API」が導入されており、多くの「PowerShellモジュール」との互換性の確認や検証が行われています。
モジュールの互換性を確保するには、最新版の「Windows 10」や「Windows Server」を利用する必要があります。
いくつかのモジュールは、古い「Windows」バージョンでもエディションのチェックをスキップすることで利用可能です。
プレビュー版では試験的な機能がデフォルトで有効に
「PowerShell」のプレビュー版では、試験的な機能がデフォルトで有効になります。ただし安定版およびRC版では、試験的な機能はデフォルトで無効になります。
Single Apartment Threadがデフォルトに
今までのリリースでは、「Multi-threaded Apartment(MTA)」がデフォルトになっていました。「WinForms」や「WPF」は「Single-threaded apartment(STA)」を要求するため、「pwsh」の「Apartment State」は「powershell.exe」と同じになりました。
COMメソッドの引数名の表示
「PowerShell」から「COM API」を呼び出す際、タイプ情報の代わりにCOMメソッドの引数名が表示されるようになりました。DBNullとNullStringを$nullとみなす
「[dbnull]::Value」と「[nullstring]::Value」が「$null」と見做されるようになり、「$null」と比較すると「$true」が返されるようになりました。Read-Host -Promptがすべての入力に対し動作するように
「Read-Host -Prompt」がすべての入力に対し期待通り動作するようになりました。-Split操作が負の数をサポート
-Split操作時、部分文字列の最大数を負の数で指定できるようになりました。つまり右(後ろ)からカウントできます。
スクリプトブロックの並列処理
「ForEach-Object」は、スクリプトブロックの並列処理を指定する「-Parallel」をサポートしました。また「-ThrottleLimit」により最大スレッド数の制御も可能です。
AppXリパースポイントの解決
AppXリパースポイントを解決できるようになりました。「Get-ChildItem」使用時、ターゲットの実行ファイルが表示されるようになりました。
ログインシェル
「Linux」や「macOS」で「PowerShell」をログインシェルに指定している場合、環境変数のセットアップ方法が他のシェルと異なっており、環境変数のいくつかが抜け落ちる現象が発生していました。この問題が修正され「PowerShell」は「Bourne shell」と同様の動作を行うようになり、環境変数が期待通りに設定されるようになりました。