Microsoftは2024年2月初め、「回復パーティション」のサイズを拡張するサンプルスクリプトを公開しました。もし、このサンプルスクリプトを実行したい場合は、クロスプラットフォーム対応の「PowerShell 7.x」ではなく、Windowsのコンポーネントである「Windows PowerShell 5.1」の使用をお勧めします。なぜなら、サンプルスクリプト内で使用されている「Split」メソッドの挙動に重大な違いがあるからです。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Windowsのコンポーネントである「Windows PowerShell」は「5.1」が現行バージョンであり、その後のロードマップは示されていません。
その代わり、Microsoftはオープンソースプロジェクトである「PowerShell」(旧称:PowerShell Core)を提供し、機能強化やパフォーマンス改善を実施してきました。現在の最新バージョンは「7.4.1」です。「PowerShell Core 6」のリリース以降、Windows PowerShellを起動すると、「新しいクロスプラットフォームのPowerShell」を試すように案内されるようになりました(画面1)。ちなみに、「powershell.exe -nologo」を実行すれば、この案内なしでWindows PowerShellを起動できます。
「.NET Framework」上に構築されたWindows PowerShellに対し、PowerShellは「.NET」(旧称、.NET Core)上に構築され、Windows、macOS、Linuxのクロスプラットフォーム対応です。Windows上ではWindows PowerShellとの共存が可能で、既存のWindows PowerShellモジュールとの互換性を提供します。Windows PowerShellに含まれるモジュールやコマンドの一部は、さまざまな理由からPowerShellから削除されていますが、削除されていないモジュールやコマンドを使用する限り、Windows PowerShellで動作するスクリプトはそのままPowerShellでも動くはずです。
冒頭で触れたMicrosoft提供のサンプルスクリプトは、2024年1月の「Windows回復環境(Windows RE、WinRE)」更新プログラムのインストールエラー回避策の一つとして示されたものです。
以下の画面2は、このサンプルスクリプトのコピーを管理者として開いたWindows PowerShell(powershell.exe)とPowerShell(pwsh.exe)でそれぞれ実行した結果です。
Windows PowerShellでは問題なくスクリプトが進みますが(実際の拡張にはユーザーの指示が必要です)、PowerShellでは「Get-Partiton」コマンドレットがエラーとなり、スクリプトが途中でストップしてしまいます。
Copyright © ITmedia, Inc. All Rights Reserved.