本記事はAIを利用して作成した技術解説・実装例です。掲載するコードや手順は一次情報を基に構成していますが、筆者による実機での動作確認は行っていません。環境やバージョンによって動作が異なる場合があります。
PowerShellチームより、長期サポート(LTS)リリースである「PowerShell 7.6」の一般提供(GA)開始が発表されました。本記事では、公式ブログで説明されているアップデート内容、モジュールの更新、組み込みメソッドの拡張、および破壊的変更などの主要なトピックを整理し、その構成要素を詳しく解説します。
PowerShell 7.6の概要と基盤技術
PowerShell 7.6は、モダンな.NETプラットフォームとの緊密な統合を維持するため、.NET 10 (LTS) を基盤として構築されています。LTSリリースとして位置づけられており、本番環境の自動化を運用する際の推奨バージョンとなります。
全体として、エンジン、モジュール、インタラクティブシェル体験の全体にわたって信頼性が向上しています。プレビューリリースの段階から、一貫性の向上、長年の問題の修正、クロスプラットフォーム環境における動作の洗練に注力されてきました。
以下の図は、PowerShell 7.6を支える基盤技術と構成要素の関係を示しています。
flowchart TD
A["PowerShell 7.6 GA Release"] --> B[".NET 10 LTS 基盤"]
A --> C["コアモジュールの更新"]
A --> D["エンジン・シェル機能の改善"]
A --> E["破壊的変更と一貫性の向上"]
C --> C1[PSReadLine]
C --> C2[Microsoft.PowerShell.PSResourceGet]
C --> C3[Microsoft.PowerShell.ThreadJob]
D --> D1["タブ補完とパス補完の強化"]
D --> D2["新規パラメータ追加 Get-Clipboard 等"]
D --> D3["組み込みメソッド PSForEach / PSWhere"]
コアモジュールの更新とタブ補完の強化
PowerShell 7.6には、いくつかの主要なコアモジュールのアップデートが含まれており、よりスムーズな操作性と豊富な補完機能を提供します。
対象モジュール
PSReadLine
Microsoft.PowerShell.PSResourceGet
Microsoft.PowerShell.ThreadJob
タブ補完とプロバイダー機能の改善
シェル全体のインタラクティブな操作性を向上させるため、多数のタブ補完に関する改善が実施されています。
プロバイダーをまたいだパス補完の改善
複数のコマンドレットのパラメータに対する値補完の追加
より多くのコンテキストやスコープでの補完機能の有効化
モジュールの短縮名(ショートネーム)による補完の追加
既存コマンドの機能追加とエンジン改善
既存のコマンドレットには新しいパラメータが追加され、スクリプトの記述性や処理効率が向上しています。
1. コマンドへの新パラメータ追加
Get-Clipboard:-Delimiterパラメータが追加され、クリップボードからの取得時に区切り文字を指定できるようになりました。Register-ArgumentCompleter -NativeFallback: ネイティブコマンド向けのカバーオール補完(包括的な補完)を登録するサポート機能が追加されました。New-Item:-Targetパラメータをリテラルとして扱うように変更されました。Get-Command:-ExcludeModuleパラメータが追加されました。Start-Process -Wait: ポーリング効率が改善されています。
2. エンジンの改善事項
PSForEach()およびPSWhere(): PowerShellの内部メソッドであるWhere()およびForeach()のエイリアスとして、PSForEach()とPSWhere()が追加されました。SystemPolicy: UnixプラットフォームにおいてSystemPolicyのパブリックAPIを可視化しつつ、no-op(何もしない処理)として扱うことで、PowerShellStandard.Libraryに含められるように更新されました。X509Certificate2:DnsNameListの更新が行われ、X509SubjectAlternativeNameExtension.EnumerateDnsNames()メソッドを使用するように変更されました。NO_COLOR環境変数: コンソールホストの stderr 出力がNO_COLOR環境変数を尊重するように修正されました。
また、これまでのプレビュー版で検証されてきた以下の機能が、正式にメインストリームの機能へと移行されています。
PSFeedbackProviderPSNativeWindowsTildeExpansionPSRedirectToVariablePSSubsystemPluginModel
破壊的変更(Breaking Changes)
長期的な一貫性を向上させるため、PowerShell 7.6には少数の破壊的変更が含まれています。導入の際は既存スクリプトへの影響を確認する必要があります。
Join-Pathコマンドレットの変更:-ChildPathパラメータがstring[]に変換されました。これにより、ユーザーは子パスの配列を指定できるようになり、-AdditionalChildPathを別途使用する必要性がなくなります。WildcardPattern.Escape(): 孤立したバックティック(backticks)を正しくエスケープするように修正されました。GetHelpCommand: トレースソース名から末尾のスペースが削除されました。
利用時の注意
本記事で紹介したPowerShell 7.6の新機能や変更点は公式ブログに基づく調査結果であり、実際の実行結果や環境固有の挙動については【Windows環境で確認予定】および【実機確認前】となります。本番環境や検証環境へ導入する際は、必ず公式ドキュメントやリリースノートを参照し、十分な事前検証を行ってください。

コメント