※この記事は「2021年5月16日」に更新しました。
今回の記事は、PowerShell(パワーシェル)についてです。
シェルという名前がなんとなく難しいイメージがあるのかもしれません。
なんか UNIX みたいです。
シェルというのは、OS(基本ソフト)と利用者の仲立ちをするプログラムのことを言います。
エクスプローラーもシェルです。
そして、コマンドプロンプトもシェルです。
PowerShell(パワーシェル)とは
PowerShell(パワーシェル)は、マイクロソフトが提供するコマンドラインのシェルです。
コマンドプロンプトは元々、MS-DOS 環境を Windows に疑似的に用意する機能です。
そのため、使っていて少し不便なところや古臭さは否めないです。
そうは言っても、古典的なものから学ぶ大切さも理解しているからこそ、当ブログでも解説しています。
実際、全く使っていない人からすれば役に立つことというのは結構あると思っています。
何事も先入観で決めてはいけないのです。
話を元に戻すと PowerShell は、コマンドプロンプトに代わる、新しいツールです。
PowerShell は、コマンドプロンプトで実行できることはほとんどできます。
更に Windows 用に大幅に強化されているのです。
豊富なコマンドレット
PowerShell は、豊富なコマンドレットが用意されています。
ちなみにコマンドレットというのは、PowerShellで使うコマンドと思ってもらえれば良いです。
しかし、それらを全て覚えるなんてとんでもない話です(好きな人は覚えても良いですが)。
例えば、Set-Location は、現在の作業場所を指定の場所に設定するコマンドレットです。
この名前には法則があり、動詞-名詞(Verb-Noun)という形に名前がつけられています。
また、エイリアスという機能を提供しており、コマンドプロンプトに慣れてきたユーザーでも、今までのコマンドを使うことができます。
Set-Location ではなく cd でも良いというわけです。
オブジェクトをパイプできる
二つのコマンドで実行結果を受け渡す用途に使うのがパイプです。
PowerShell は、配列やオブジェクトを受け渡しできます。
今まで数行でコーディングが必要だったことが1行で記述できるということも珍しくありません。
マルチプラットフォーム対応のシェル
PowerShell は、Windows だけでなく、MacOS や Linux でも使えます。
ちなみにマルチプラットフォームというのは、この場合、異なる OS 間でもプログラムを作動できるということです。
今後は PowerShell を学習するべきか?
PowerShell という名前はピンとこない方もいるかもしれません。
そういう私も書籍で初めて知り、少し見てみようかなと思ったくらいのレベルです。
まず、第一印象でやる気がなくなりかけたのが長いコマンドレットです。
動詞-名詞 という命名規則があるとは言え、今までコマンドプロンプトに慣れていた方には面倒だと感じるかもしれません。
それに関しては、当記事でエイリアスという機能があることを説明したので問題ないでしょう。
しかし、まだ慣れていないと違和感を感じる部分というのはあります。
比較演算子です。
-eq が 等しい で、-ne が 等しくない。
-gt が より大きい(>) で、-lt が より小さい(<)。
なんか今までと違う。
あとできることがかなり広がっているため、どこから手をつけるかわかりづらいところです。
しかし、Windows 10 のクイックメニューには PowerShell はありますが、コマンドプロンプトはありません。
PowerShell は、コマンドプロンプトでできることはほとんどできます(2回目)。
ping や ipconfig くらいできればいいやという方ならコマンドプロンプトで十分です。
コマンドプロンプトの方がシンプルで軽いです。
しかし、自分好みのスクリプトを作っていきたいと考えているなら、PowerShell は勉強して損はないはずです。
はっきり言ってコマンドプロンプトも昔からあるものなので、文法にクセがあります。
そして、おそらくほとんどの方がコマンドプロンプトよりもできることが多いため、難しいと感じるかと思います。
まずは簡単なことから実行して慣れてみることです。
コマンドプロンプトは今後必要ないのか?
私は、コマンドプロンプトと PowerShell のどちらも現段階では学習して損はないと思っています。
ただ、コマンドプロンプトを使っていて、一番不便に感じるのが、おそらく制御構文などが貧弱なところだと思います。
実は、コマンドプロンプトには、内部コマンドと外部コマンドがあります。
例えば、ネットワーク管理でよく使われる ipconfigコマンド は、外部コマンド(実行ファイル)です。
それに対して、内部コマンド(echoコマンド、dirコマンドなど)はシェルに組み込まれています。
コマンドプロンプトの内部コマンドはエイリアスによって PowerShell でも使えます(やや結果は異なりますが)。
外部コマンドはコマンドプロンプトと同様使えます。
わざわざコマンドプロンプトで苦手なことをあえてさせる必要はありませんが、無理して PowerShell を使う必要もないと思っています。
個人的にはコマンドプロンプトも学習し、その知識を PowerShell でも活用するのが良いと思います。
最後に
いかがでしょうか。
今回は、PowerShell(パワーシェル)について、解説しました。
はっきり言って、PowerShell はコマンドプロンプトよりもできることが多い分、パソコン初心者にやさしいとは言えません。
しかし、CUIによる自動化という部分では非常に強力なツールです。
オブジェクト指向の次世代シェルスクリプトを体験してみましょう。
現在、PowerShell講座を公開中です。
まずは、環境構築の記事をご参照下さい。
Windows PowerShell も高機能ですが、マルチプラットフォームなものは上記のものです。
インストールしておきましょう。