PowerShell入門

デジタル

今回の記事は、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 はコマンドプロンプトよりもできることが多い分、パソコン初心者にやさしいとは言えません。

しかし、CUIによる自動化という部分では非常に強力なツールです。

オブジェクト指向の次世代シェルスクリプトを体験してみましょう。

現在、PowerShell講座を検討中です。

管理人のスキルレベルが上がるまで少々お待ちください。

現在、公開中です。

まずは環境構築の記事をご参照下さい。

PowerShell Core をインストールする

2019.01.30

Windows PowerShell も高機能ですが、マルチプラットフォームなものは上記のものです。

インストールしておきましょう。