はじめに
PowerShellのシステム要件やバージョン情報などを調べていたメモの体裁がある程度整ったので公開します。
Powershellのシステム要件
- WIndows10,11にプレインストールされているのは「PowerShell 5.1」
- 「Microsoft .NET Framework 4.5 のフル インストールが必要」
- Windows10の1903以降にプレインストールされているのは
.NET Framework 4.8
- 参考:.NET Framework のシステム要件(サポートされているクライアント オペレーティング システム)
(執筆時点でWindows10 21H2の情報はなかった) - 確認:
*(Get-Item 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\').GetValue("Version")
* 参考:PowerShellを使ってインストール済の.NET Frameworkのバージョンを確認する - 結果:
4.8.04084
- 参考:.NET Framework のシステム要件(サポートされているクライアント オペレーティング システム)
-
.NET Framework 4.8
が.NET Framework 4.5
の上位互換だと仮定すれば、Windows10の1903以降では「PowerShellから.NET Framework 4.8
の環境を利用して.NET Framework 4.5
の機能が使える」と考えて良さそう。
PowerShellからのバージョン確認
Windowsのバージョン情報
- 参考:実行しているWindowsバージョンは何ですか?
chcp 65001; systeminfo |findstr /B /C:"OS Name" /B /C:"OS Version"
-
systeminfo
の出力が環境依存するので、要改善。 -
chcp
で切り替えると画面がクリアされるのでイマイチ。 -
slmgr /dlv
は表示がわかりにくい。
まとめてバージョン確認
PS > (gci function:ver).definition
(systeminfo | ?{$_.Contains("OS")})[0,1]; ($PSVersionTable | Out-String -Stream)[3].trim() -replace ' +',":`t`t"
PS > ver
OS 名: Microsoft Windows 10 Home
OS バージョン: 10.0.19044 N/A ビルド 19044
PSVersion: 5.1.19041.1320
コマンドの実行結果の中から必要な行だけ配列要素として取り出して繋げると、コンパクトでそこそこ見やすくなります。
その他
レジストリから取得
PS > (gi 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\').GetValue("ProductName")
Windows 10 Home
PS > (gi 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\').GetValue("DisplayVersion")
21H2
wmic利用(非推奨)
-
(wmic os get caption)[2]
cmd利用
(cmd /c ver)[1]
参考
- What is the difference between dot methods(.Replace) and hyphen methods(-replace)?
- 正規表現について - PowerShell(正規表現での置換)
- 正規表現言語 - クイック リファレンス
- String.Trim メソッド
- String.Contains メソッド
- 配列について - PowerShell(配列の読み取り)
- PowerShellのバージョンを調べる方法
-
Windows 10 リリース情報(サービス チャネル)
- Wikipedia:Microsoft Windows 10のバージョン履歴
- Wikipedia(英):Windows 10 version history