PowerShellのバージョンを調べる
PowerShellはバージョンが違っていてもなるべく同じスクリプトで動作するようにマイクロソフトさんが努力してくれておりますが、PowerShellが完全に下位互換性が保たれているわけではありません。将来的に画期的な新しいコマンドが増えることもあるでしょう。
自分のパソコンにどのようなバージョンの PowerShell がインストールされているか調べるには $PSVersionTable または $HOST という変数を参照します。これは環境変数のようなものです。
$PSVersionTable を使う
まずは $PSVersionTable を使う方法を示します。下記が私のパソコンの実行結果です。バージョン 7.2.5 です。
PS C:\tmp> $PSVersionTable
Name Value
---- -----
PSVersion 7.2.5
PSEdition Core
GitCommitId 7.2.5
OS Microsoft Windows 10.0.19044
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
そのうちメンバだけを表示するならばこうします。
PS C:\tmp> $PSVersionTable.PSVersion
Major Minor Patch PreReleaseLabel BuildLabel
----- ----- ----- --------------- ----------
7 2 5
他のパソコンではこういう結果もありました。バージョン 5.1 です。バージョン 5.1 だと OS や Platform などのメンバが定義されていないことがわかります。
PS C:\tmp> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.19041.1682
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.1682
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
$HOST を使う
$HOST という変数を参照しても、PowerShell のバージョン情報が取得できます。
PS C:\tmp> $HOST
Name : ConsoleHost
Version : 7.2.5
InstanceId : cf43fafb-c822-44a3-8135-54d7670b3cb2
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : ja-JP
CurrentUICulture : ja-JP
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
そのうち Version メンバだけ取得します。$HOST だと Revision も取得できるようですが -1 だから、あまり意味のある数値ではないかもしれません。
PS C:\tmp> $HOST.Version
Major Minor Build Revision
----- ----- ----- --------
7 2 5 -1