知識マップ: Windows PowerShell 5.1とPowerShell 7の違い ── 社内スクリプト移行の実務ガイド

記事「Windows PowerShell 5.1とPowerShell 7の違い ── 社内スクリプト移行の実務ガイド」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

Windows PowerShell 5.1は.NET Framework上でpowershell.exeとして動き新機能の追加が止まっている一方、PowerShell 7は.NET上でpwsh.exeとして動く別インストールの製品で、両者は置き換えではなくサイドバイサイドで共存する。日本語環境の移行で最初に踏む地雷は既定の文字エンコーディング差で、-Encodingの明示とスクリプトのBOM付きUTF-8保存でほぼ防げる。7で読み込めないモジュールはWindows互換機能が背後の5.1プロセス(WinPSCompatSession)を介して救うが、返るのはシリアライズされた値でメソッド呼び出しはできない。#Requiresと$PSVersionTableでどちらの世界のスクリプトかを明示し、タスクスケジューラの起動コマンドをpowershell.exeからpwsh.exeへ書き換えて初めて実行環境が7へ移行する。

PowerShell 5.1と7の関係の知識マップWindows PowerShell 5.1とPowerShell 7が別の実行ファイルでサイドバイサイド共存すること、既定エンコーディングの違いが文字化けを引き起こし対策で防げること、7で動かないモジュールをWindows互換機能が救う仕組みと制約、バージョンを明示する手段、編集環境とインストール方法の選び方を示す図利用する利用する利用する利用する利用する利用する原因になり得る軽減する防止する利用する利用する利用する用いるのは非推奨防止するで確認できるで確認できる用いるのは非推奨利用する推奨される対応の後継推奨される対応推奨される対応推奨される対応推奨される対応前提とする原因になり得るWindows PowerShell 5.1PowerShell 7.NET Framework.NET(Core以降)powershell.exepwsh.exeタスクスケジューラの無人実行既定の文字エンコーディングの違い(5.1/7)移行時の文字化け-Encodingの明示スクリプトのBOM付きUTF-8保存Windows互換機能(-UseWindowsPowerShell)WinPSCompatSessionオブジェクトのメソッド呼び出しを要する処理#Requires文想定外バージョンでの実行$PSVersionTableWindows PowerShell ISEVS CodeのPowerShell拡張機能PowerShell 7のLTSリリースWindows ServerPowerShell 7のMSIパッケージwinget

概念間の関係(全26件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Windows PowerShell 5.1
Windowsに標準で同梱されている、.NET Framework上に構築されたレガシー世代のPowerShell(5.1系)のランタイム。実行ファイルはpowershell.exeで、.NETアプリからはMicrosoft.PowerShell.5.1.ReferenceAssembliesを介して呼び出せる。
PowerShell 7
PowerShell Core系譜の最新世代で、.NET(Core以降)上に構築されたPowerShellのエディション。実行ファイルはpwsh.exeで5.1のpowershell.exeとサイドバイサイドに共存し、Out-File・Set-Content・Export-Csvなどの既定書き込みencodingはBOMなしUTF-8である。
タスクスケジューラの無人実行
指定したアカウントで、スケジュールやログオンなどのトリガーに従いプログラムを実行するWindowsの仕組み。ログオン種別(対話トークン・パスワード保存・S4Uなど)の設定によっては、ユーザーがログオンしていなくても実行できる。
既定の文字エンコーディングの違い(5.1/7)
コマンドレットごとに既定が異なるWindows PowerShell 5.1と、一律BOMなしUTF-8を既定とするPowerShell 7との、テキスト入出力における既定エンコーディングの違い。
-Encodingの明示
ファイル入出力コマンドレットで-Encodingパラメーターを明示的に指定し、実行環境の既定エンコーディングに依存しないようにする対策。
スクリプトのBOM付きUTF-8保存
非ASCII文字を含むPowerShellスクリプトファイルを、Windows PowerShell 5.1とPowerShell 7の双方が正しく解釈できるBOM付きUTF-8で保存する対策。
Windows互換機能(-UseWindowsPowerShell)
PowerShell 7で読み込めないモジュールを、バックグラウンドで起動したWindows PowerShell 5.1プロセスを通じて暗黙のリモーティング経由で使えるようにする機能。
#Requires文
指定したPowerShellのバージョン(-Version)やエディション(-PSEdition)などの前提条件を満たさない場合、スクリプトの実行そのものを拒否するステートメント。
Windows PowerShell ISE
Windows PowerShell 5.1以前のスクリプトにのみ対応する統合スクリプト編集環境。新機能の開発は終了しているが、Windowsからの削除予定はない。
VS CodeのPowerShell拡張機能
Visual Studio Code上でPowerShellの編集・デバッグを支援する拡張機能。PSScriptAnalyzerを内蔵し、編集中にその場で警告を表示する。
PowerShell 7のLTSリリース
更新を重大なセキュリティ修正と保守に絞り、既存ワークロードへの影響を最小限にするよう設計された、業務サーバー向けに推奨されるPowerShell 7のリリース区分。
PowerShell 7のMSIパッケージ
Windows Serverや企業展開向けに案内される、PowerShell 7の配布形式。Microsoft Update経由の更新オプションを持つ。
winget
Windowsクライアントでの推奨インストール方法として案内される、Microsoft製のパッケージマネージャー。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。