知識マップ: 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へ移行する。
flowchart LR
accTitle: PowerShell 5.1と7の関係の知識マップ
accDescr: Windows PowerShell 5.1とPowerShell 7が別の実行ファイルでサイドバイサイド共存すること、既定エンコーディングの違いが文字化けを引き起こし対策で防げること、7で動かないモジュールをWindows互換機能が救う仕組みと制約、バージョンを明示する手段、編集環境とインストール方法の選び方を示す図
windows_powershell_5_1["Windows PowerShell 5.1"]
powershell_7["PowerShell 7"]
dotnet_framework[".NET Framework"]
dotnet[".NET(Core以降)"]
powershell_exe["powershell.exe"]
pwsh_exe["pwsh.exe"]
task_scheduler["タスクスケジューラの無人実行"]
powershell_encoding_difference["既定の文字エンコーディングの違い(5.1/7)"]
powershell_migration_mojibake["移行時の文字化け"]
explicit_encoding_specification["-Encodingの明示"]
bom_utf8_script_saving["スクリプトのBOM付きUTF-8保存"]
windows_powershell_compatibility_feature["Windows互換機能(-UseWindowsPowerShell)"]
winpscompatsession["WinPSCompatSession"]
object_method_invocation_need["オブジェクトのメソッド呼び出しを要する処理"]
requires_statement["#Requires文"]
unexpected_version_execution["想定外バージョンでの実行"]
psversiontable["$PSVersionTable"]
powershell_ise["Windows PowerShell ISE"]
vscode_powershell_extension["VS CodeのPowerShell拡張機能"]
powershell_lts_release["PowerShell 7のLTSリリース"]
windows_server["Windows Server"]
powershell_msi_installer["PowerShell 7のMSIパッケージ"]
winget["winget"]
windows_powershell_5_1 -->|"利用する"| dotnet_framework
powershell_7 -->|"利用する"| dotnet
windows_powershell_5_1 -->|"利用する"| powershell_exe
powershell_7 -->|"利用する"| pwsh_exe
task_scheduler -.->|"利用する"| powershell_exe
task_scheduler -.->|"利用する"| pwsh_exe
powershell_encoding_difference -.->|"原因になり得る"| powershell_migration_mojibake
explicit_encoding_specification -->|"軽減する"| powershell_migration_mojibake
bom_utf8_script_saving -->|"防止する"| powershell_migration_mojibake
powershell_7 -.->|"利用する"| windows_powershell_compatibility_feature
windows_powershell_compatibility_feature -->|"利用する"| windows_powershell_5_1
windows_powershell_compatibility_feature -->|"利用する"| winpscompatsession
windows_powershell_compatibility_feature -->|"用いるのは非推奨"| object_method_invocation_need
requires_statement -->|"防止する"| unexpected_version_execution
powershell_7 -->|"で確認できる"| psversiontable
windows_powershell_5_1 -->|"で確認できる"| psversiontable
powershell_ise -->|"用いるのは非推奨"| powershell_7
powershell_ise -->|"利用する"| windows_powershell_5_1
vscode_powershell_extension -->|"推奨される対応"| powershell_7
vscode_powershell_extension -->|"の後継"| powershell_ise
powershell_lts_release -->|"推奨される対応"| windows_server
powershell_msi_installer -->|"推奨される対応"| windows_server
winget -->|"推奨される対応"| powershell_7
powershell_msi_installer -->|"推奨される対応"| powershell_7
requires_statement -.->|"前提とする"| powershell_7
powershell_7 -.->|"原因になり得る"| powershell_migration_mojibake
概念間の関係(全26件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- Windows PowerShell 5.1は.NET Frameworkを利用します。
- PowerShell 7は.NET(Core以降)を利用します。
- Windows PowerShell 5.1はpowershell.exeを利用します。
- PowerShell 7はpwsh.exeを利用します。
- タスクスケジューラの無人実行はpowershell.exeを利用します。
- タスクスケジューラの無人実行はpwsh.exeを利用します。
- 既定の文字エンコーディングの違い(5.1/7)は移行時の文字化けの原因になることがあります。
- -Encodingの明示は移行時の文字化けを軽減します。
- スクリプトのBOM付きUTF-8保存は移行時の文字化けを防ぎます。
- PowerShell 7はWindows互換機能(-UseWindowsPowerShell)を利用します。
- Windows互換機能(-UseWindowsPowerShell)はWindows PowerShell 5.1を利用します。
- Windows互換機能(-UseWindowsPowerShell)はWinPSCompatSessionを利用します。
- Windows互換機能(-UseWindowsPowerShell)をオブジェクトのメソッド呼び出しを要する処理に用いることは推奨されません。
- #Requires文は想定外バージョンでの実行を防ぎます。
- PowerShell 7は$PSVersionTableで確認できます。
- Windows PowerShell 5.1は$PSVersionTableで確認できます。
- Windows PowerShell ISEをPowerShell 7に用いることは推奨されません。
- Windows PowerShell ISEはWindows PowerShell 5.1を利用します。
- VS CodeのPowerShell拡張機能はPowerShell 7に対する本記事の推奨です。
- VS CodeのPowerShell拡張機能はWindows PowerShell ISEの後継に当たります。
- PowerShell 7のLTSリリースはWindows Serverに対する本記事の推奨です。
- PowerShell 7のMSIパッケージはWindows Serverに対する本記事の推奨です。
- wingetはPowerShell 7に対する本記事の推奨です。
- PowerShell 7のMSIパッケージはPowerShell 7に対する本記事の推奨です。
- #Requires文はPowerShell 7を前提とします。
- PowerShell 7は移行時の文字化けの原因になることがあります。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。