このページの本文へ

前へ 1 2 次へ

Windows Info 第423回

PowerShellの今を見る 2つあるPowerShellはどっち使えばいい?

2024年03月17日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 PowerShellに関しては、2021年に1回まとめたのだが、あれから3年も経過したので最新情報も含めて、簡単に解説したい。なお、それぞれのこれまでの経緯などは、過去記事に記載しているので参考にしてほしい。

●あらためて「PowerShell」の現状と登場後の経緯を整理する
 https://ascii.jp/elem/000/004/052/4052789/

 結論から言えば、PowerShellには、Windowsに同梱されている「Windows PowerShell」と、ユーザーがインストールする必要がある「PowerShell」がある。コマンドラインを使う頻度が高いようならば、最新のPowerShellをインストール、そうでなければWindows PowerShellで十分である。

 PowerShellのインストーラーなどに表示される奇妙な人物イラストを見たことがある人もいるだろう。これはPowerShellのマスコットらしい(PowerShell Digital Artにアメコミ調のコミックがあり、マーベルっぽいヒロインだ)。 。

PowerShell

名前はPowerShell。顔の模様は、プロンプトみたいなPowerShellのアイコン

PowerShellの前提となる「.NET」とは?

 PowerShellの解説をするには、まず「.NET」についての簡単な理解が必要になる。「.NET」とは、アプリケーションの開発、実行環境で、現在のWindowsソフトウェア開発の主流になっているものだ。

 過去に作られたアプリケーションを含めれば、機械語のアプリケーションの方が多いと思われるが、現在も開発されているアプリケーションに着目すると、「.NET」の利用が多いと思われる。.NETについても過去にこれまでの経緯をまとめた。

●あらためて「.NET」について整理する
 https://ascii.jp/elem/000/004/051/4051022/

 「.NET」には、「.NET Framework」と「.NET Core」(略して.NETと呼ぶ)の2種がある。.NET Frameworkが最初に作られ、Windows VistaからWindowsに同梱されてきた。

 .NET Frameworkの最新版は、.NET Framework Ver.4.8.1で、Windows 11にも搭載されている。.NET Frameworkは、今後メジャーアップデートすることはなく、今後のWindowsにも4.8.xが同梱される。セキュリティ/バグフィックスのアップデートはあるが、最新機能への対応などは、後継とされる.NET Coreが担う。

 .NET coreは、現在では単に.NETと呼ばれる。この記事では、.NETと.NET Frameworkを総称するときは、カッコ付きで「.NET」と表記している。.NETはオープンソースで開発され、現在では、毎年11月にアップデートされている。3年(36ヵ月)のサポート期間を持つLTSと、18ヵ月(1年半)のサポート期間のSTSを1年ごとに交互にリリースする。なお、リリースには、実行環境だけの「.NETランタイム」と、開発環境を含む「.NET SDK」の2つがある。

 最新版の.NET 8(Ver.8.x)は、2023年11月に出荷され、LTSのため、2026年までサポートされる。原稿執筆時点では、.NET 7(Ver.7.x)が今年5月まで、.NET 6が今年11月までサポートされている。

 このように最低でも複数の.NETバージョンが利用できるが、それぞれサポート期間があり、実行環境としては、継続的にアップデートしなければならない。ただし多くの場合、アプリケーションをインストールするときに、自動的にランタイムがインストールされるため、ユーザーは特に意識する必要はない。また、インストールされた.NETは、Windows Update経由でアップデートされる。

 以下の表に.NET Frameworkと.NET Coreのこれまでのバージョン履歴を示す。

PowerShell

PowerShellと.NETの関係

 PowerShellには、Windowsに同梱されている「Windows PowerShell」と、以前はPowerShell Coreと呼ばれていた「PowerShell(Core)」の2つがある。違いは、Windows PowerShellは、.NET Frameworkを使って開発されているのに対して、PowerShellは、.NET Coreを使って開発されていることにある。以下の表は、Windows PowerShellとPowerShellのバージョン履歴である。

PowerShell

 また、PowerShellは、以前には「PowerShell Core」と表記されていたが、2021年に.NET Coreが.NETになったタイミングで、PowerShellと表記されるようになった。また、2021年以前の古い記事では、Windows PowerShellをPowerShellと略記していることがあるので注意が必要だ。

 「Windows PowerShell」とPowerShellの最大の違いは、対応している「.NET」の違いである。また、Windows PowerShellは、Windows Updateで更新される(必ず更新されるわけではない)。これに対して、PowerShellには、複数のインストール方法があり、更新方法もインストール方法ごとに異なる。

 対応する「.NET」の違いは、PowerShellスクリプトの微妙な互換性に影響する。同じオブジェクトのメソッドでも、「.NET」のバージョンにより動作が異なる。特に.NET Frameworkと.NETでは、非互換性が生じることがある。

 というのも、PowerShellでは、「.NET」のオブジェクトを利用し、そのプロパティやメソッドを自由に呼び出せるからだ。このとき、.NET Frameworkで作られたWindows PowerShellは、.NET Frameworkのオブジェクトを扱い、.NETで作られたPowerShellは、.NETのオブジェクトを扱う。このため、同じ文法、同じステートメントでも、呼び出される「.NET」に違いが生じる。

 例えばPowerShellの文字列は、.NET Framework、.NETのSystem.Stringクラスのオブジェクトだ。.NET Frameworkと.NETのStringクラスには違いがあり、.NET 8ではメソッドなどが追加されている。たとえば、.NET FrameworkではSplitメソッドが6個(引数のパターンが異なる)しかないが、.NET 8には8個ある。これは、Microsoftのページに記述がある。

●.NET Frame 4.8.1 String クラス
 https://learn.microsoft.com/ja-jp/dotnet/api/system.string?view=netframework-4.8.1#methods
●.NET 8 String クラス
 https://learn.microsoft.com/ja-jp/dotnet/api/system.string?view=net-8.0#methods

 PowerShellで利用できる文字列のSplit()メソッドは、PowerShellが「.NET」のメソッドを呼び出しているだけである。つまり、SplitメソッドはPowerShellではなく「.NET」の範疇にあり、その挙動はPowerShellの埒外にある。

 このためスクリプトを書く場合に互換性を高めるには、できるだけPowerShellの文法内で記述する必要がある。たとえば、文字列の分割ならPowerShellの分割演算子「-split」を使う。ちなみに「-split」はRegexクラスのSplit()メソッドを使って実装されている。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,390
2
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥660
3
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥980
4
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥5,280
5
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
¥1,780
6
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
¥18,980
7
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
8
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
¥1,590
9
Amazon Kindle - 目に優しい、かさばらない、大きな画面で読みやすい、6週間持続バッテリー、6インチディスプレイ電子書籍リーダー、ブラック、16GB、広告なし
Amazon Kindle - 目に優しい、かさばらない、大きな画面で読みやすい、6週間持続バッテリー、6インチディスプレイ電子書籍リーダー、ブラック、16GB、広告なし
¥13,980
10
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥5,645

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン