今回は前編、後編の2回にわけて、PowerShellを実用で使うための解説を中心にする。PowerShellはWindowsに組み込まれているプログラムで、コマンドラインインタープリタという「シェル」と、「スクリプティング言語」、そして「システム管理ツール」の側面を併せ持つ。本記事は、全く知らない人を対象にした入門的な内容ではなく、実用的な使い方につながる基礎を紹介する。最低でもプログラミング経験があることを前提にしている。

PowerShellは次世代のcmd.exeなのか?

 普段、WindowsやWindows Serverの管理でnetshを使っている場合、Windows 8からは、netshに関する警告を見た記憶があるだろう(画面1)。また、[Windows]+[X]キーで表示されるメニューの設定で、メニューに表示される「コマンドプロンプト」を「PowerShell」に切り替える項目がある(画面2)。こうしたことから推測するに、マイクロソフトは、PowerShellを管理ツールとして、現在のコマンドプロンプトのcmd.exeやその下で動作するnetshなどの代替にしようとしていると推測される。

画面1●netshで一部のコンテキストを指定すると、PowerShellへの移行を進められる
画面1●netshで一部のコンテキストを指定すると、PowerShellへの移行を進められる
[画像のクリックで拡大表示]
画面2●Windows 8から、[Windows]+[X]メニューのcmd.exeをPowerShellに置き換えるオプションがある
画面2●Windows 8から、[Windows]+[X]メニューのcmd.exeをPowerShellに置き換えるオプションがある
[画像のクリックで拡大表示]

 cmd.exeも、コマンドラインとバッチ(Batch)、コンソール内で動作する様々な管理用コマンドの組み合せで、一種の「環境」を提供していた。ただ、cmd.exeは、MS-DOSのcommand.comを起源に持ち、機能拡張はされているものの、基本的には、MS-DOSのコマンドラインからほとんど進化していない。PowerShellは、ある意味、Windowsに残っていたMS-DOS最後の「レガシー」とでもいうべきcmd.exeを置き換えるものといえる。

 マイクロソフトもWindows 10でcmd.exeを強化したのでは?と思われるかもしれないが、実際に強化されたのは、コンソールウインドウを表示する「CONHOST.EXE」だ。ウインドウサイズとバッファーの制御やエスケープシーケンス、ウインドウの透明化などの機能は、cmd.exeから起動するCONHOST.EXE側の機能だ。