PowerShell 7.0.0 Preview6登場
MicrosoftからPowerShell 7のリリースへ向けた最新プレビュー版となる「PowerShell 7.0.0 Preview6」が公開された。今回のバージョンには多くの新機能が追加されている。Microsoftはこのリリースを最後のプレビューリリースにするとしており、新機能が追加される最後のバージョンとなることから、駆け込み的な意味もあって多くの機能が導入されたのではないかと思われる。
2019年12月にはプレビュー版ではなく、リリース候補版が公開される見通しだ。リリース候補版には新しい機能は追加されず、基本的にはバグ修正が行われることになる。コマンドレットにおける小さな変更などは取り込まれるとされているが、2019年12月以降は基本的に変更は行われなくなる。Microsoftは2020年1月に「PowerShell 7」の公開を予定しており、長期に渡ってサポートされるバージョンになるものと考えられている。
PowerShell 7.0.0 Preview6における主な変更点は次のとおり。
パフォーマンスの向上
- Parser.SaveErroにおいてクロージャを使用しないように変更
- Regexインスタンスを新しく生成するタイミングにおけるキャッシュ機能の向上
- types.ps1xml、typesV3.ps1xml、GetEvent.types.ps1xmlからのPowerShell組み込み型データ処理の向上
- PSConfiguration.ReadValueFromFileのパフォーマンス向上とメモリ使用量の改善
実験的機能
- ファイルシステム関連のアウトプットにおいて、UNIX系OSのstat情報を加味するように変更
- null条件オペレータとして「?.」と「?[]」をサポート
- PowerShell Coreにおいて非互換であるWindows PowerShellモジュールを使用できるようにする機能を追加
コマンドレットのアップデートと修正
- Get-WinEventコマンドレットにリミットチェックを追加
- -ErrorVariableが指定された場合にStopUpstreamCommandsExceptionに入らないようにコマンドランタイムを更新
- ネイティブコマンド向けに[Console]::OutputEncodingに対する出力エンコーディングを指定するように変更
- サンプルにおけるマルチラインコードブロックに対応
- Select-StringコマンドレットにCultureパラメータを追加
- デフォルトでコレクションを展開するようにConvertFrom-Jsonコマンドレットを変更
- Group-Objectコマンドレットにおいて-CaseSensitiveパラーメタおよび-AsHashtableパラメータを指定した場合、大文字と小文字を区別するハッシュテーブルを使用するように変更
- 大文字と小文字を加味するようにパスを再構築した場合、ファイルの列挙に失敗した場合に例外を処理するように変更
- myCommandの代わりにActivityを表示するようにConciseViewを修正
- WebコマンドレットがHTTPエラーステータスを無視することを許可
- ConvertTo-Jsonコマンドレットにおいて$nullをサポート
- ConvertTo-Jsonコマンドレットにおいて[AutomationNull]::Valueおよび[NullString]::Valueと$nullと同じように扱うように変更
- SSHリモーティングを実施するときのIPv6アドレスからブランケットを削除
- pwshコマンドに空白だけが送信された場合にクラッシュする問題を修正
- Windowsのみならずクロスプラットフォームに対応したGet-ClipboardコマンドレットとSet-Clipboardコマンドレットを導入
- PSConfiguration.csの設定としてnullが取得された場合にデフォルト値を返すように変更
- IO例外を非終了処理として扱うように変更
- TabExpansion2を-CursorColumn不要および$InputScript.Lnegthとして扱うように変更
- ホストがスクリーンの列行の値を返さないときの処理を実装
- ホストがアクセントカラーをサポートしていない場合の処理を改善
- 出力にVTエスケープシーケンスを含めるかどうかを制御する$env:__SuppressAnsiEscapeSequencesを追加
- Start-Jobコマンドレットにおいて空白指定の-WorkingDirectoryパラーメタをサポート
- 末尾にバックスラッシュを含むStart-Jobコマンドレットのワーキングディレクトリパスを修正
- Update-Listコマンドレットを再度追加
- WindowsプラットフォームにおいてGet-Counterコマンドレットを再度追加
- WindowsプラットフォームにおいてOut-Printerコマンドレットを再度追加
- WindowsプラットフォームにおいてClear-RecycleBinコマンドレットを再度追加
ツール
- Visual StudioでビルドできるようにSDKToUseプロパティに対するデフォルト設定を追加
- MSIインストールに対応するようにInstall-Powershell.ps1にパラメータを追加
- install-powershell.ps1にサンプルを追加
エンジンのアップデートと修正
- pwshコマンドを$env:PSModulePathを引き継ぐように変更するとともに、powershell.exeが適切に起動できるように変更
テスト
- ハッシュテーブルにおける鍵を適切に検出するためにstringdataテストを変更
- テストモジュールをアンロード
- URLテストのテスト間時間を増加
- テストアクションを正確に記述するようにテストをアップデート
コードクリーンナップ
- Compiler.csにおけるコーディングスタイルを改善
- InitialSessionState.csにおけるコーディングスタイルを改善
- PSSessionクラスにおけるコーディングスタイルを改善
- CommaDelimitedStringCollectionに対する使われていない型コンバータを削除
- 機能していないUpdate-Help関連の機能を削除
- 組み込み型エイリアスを使用するようにアップデート
- 使われていないセッティングキーConsolePromptingを削除するとともに、ExecutionPolicyセッティングクエリー時に不必要な文字列が作成されるのを削除
- デイリービルドにおけるアップデート通知機能を無効化
- 以前削除したデバッグAPIを復帰
ドキュメント
- CONTRIBUTING.mdをアップデート
- README.mdにおけるインストールドキュメントリンクを修正
- install-powershell.ps1スクリプトにサンプルを追加
- CHANGELOG.mdにおるSelect-Stringの強調機能とImport-DscResourceの誤りを修正
- powershell-beginners-guide.mdから古いリンクを削除
ビルドおよびパッケージ
- Debian 10、Debian 11、CentOS 8のパッケージを追加
- x86 MSIXパッケージのビルドに対応
- win7x86 MSIXパッケージのビルドに対応
- セマンティックバージョンをNormalizeVersion関数に渡すことを許可
- .NETコアフレームワークを3.1-preview.3へアップデート
- PSReadLineを2.0.0-beta5から2.0.0-beta6へアップデート
- Newtonsoft.Jsonを12.0.2から12.0.3へアップデート
- Markdig.Signedを0.17.1から0.18.0へアップデート
- ThreadJobを2.0.1から2.0.2へアップデート
- Microsoftストアの要件に準拠するようにApp Storeマニフェストおよびパッケージングモジュールをアップデート
非互換変更
- Test-Connectionコマンドレットの動作をWindows PowerShellのTest-Connectionコマンドレットと同じ動作になるように変更
- ParenExpression、SubExpression、ArrayExpressionの$?の値を自動的にTrueにするのではなく、コンテキストの中で最後に実行された結果に置き換えるように変更
- Start-Jobコマンドレットにおけるワーキングディレクトリをカレントディレクトリに設定
ダウンロード
PowerShell 7.0.0 Preview6は次のURL経由でダウンロード可能。
Debian 10、Debian 11、CentOS 8のパッケージが追加されており、これまでよりもパッケージの提供されるプラットフォームが増えている。