コマンドプロンプトお疲れ様でした!これからはPowerShell!

Windows10がこれから搭載する機能についてちょこちょこ調べれていたら、こんな記事にぶち当たりました。
Announcing Windows 10 Insider Preview Build 14971 for PC

この中段PowerShell in the Shellの箇所を見て、オォってなりました。
これまでWindowsの標準シェルといえばコマンドプロンプトだったのですが、今後はWindows PowerShellを標準シェルとするようです。
例えば、Winキー+x(Windowsキーを押しながらx)で画面左下にメニューがずらっと表示され、現在はその中にコマンドプロンプトがいるのですが、今後はここがPowerShellになります。
PowerShellもWindows7から標準搭載され(Vistaでも手動でインストールは出来ました)、当初は使いにくい印象もありましたが、その後進化を続け標準シェルとして使えるレベルまでになったんではないでしょうか。
少なくともコマンドプロンプトやWindows Script Host(VBScript、JScrip)を使うくらいくらいなら、私はPowerShellを選びます。最初は抵抗があるかもしれませんが、実際に触ってみると意外にとっつきやすいです。
そんなPowerShellですが、これまで標準シェルでは無かった事もあり、人によっては存在すら知らなかったんではないでしょうか。(技術者ですが私の周りでも知らない人は結構いました)
今回は難しい話は抜きで、イメージを掴んでもらう事を中心にPowerShellとはどんなものかを説明していきたいと思います。

とりあえず使ってみよう

まずは触ってみるのが、理解への早道です。Winキー+r で「ファイル名を指定して実行」を表示させ、powershellと入力しEnterを押してみましょう。
こんな感じでPowerShellの画面が開いたはずです。

1
この画面でコマンドをポチポチ入力して遊んでいきます。

PowerShellのコマンド

PowerShellのコマンドはコマンドレットと称します。このコマンドレット、どんなものが用意されているんでしょう。では早速この宝の山を覗いてみましょう。Get-Commandと入力しEnterを押すとコマンドレットの一覧が表示されます。

2
1画面に納まらず画面がスクロールするくらい表示されました。これだけの機能が使えるんですね。ですが、よく見てみると左側にCommandType欄があってAliasやFunction等コマンドレット(Cmdlet)以外も表示されています。
とりあえずコマンドレットに絞って使いたいので、下記の通り入力します。
Get-Command -CommandType Cmdlet

3
今度はコマンドレットだけに絞られて表示されました。このような形で使いたい機能のコマンドレットを入力して、その後に検索条件などのオプションを指定していくという、まぁ、他のシェルと同じフォーマットです。

 

意外と使いやすいPowerShellの操作

さてさてPowerShellがイイと私が感じているのが、自動補完機能です。Tabキーでこの機能を使う事が出来、この便利さを味わうとWindowsの他のシェルには戻れません。
例えば、前述の Get-Command ですが11文字もあり大文字も入り交じっているので、これを入力をするのは少し面倒です。ところが自動補完機能を使うとそのストレスから解放されます。
get-coとだけ入力してTabキーを押してみましょう。

get-coからGet-Commandに切り替わりました。

なのでPowerShellでの入力は、そのまま小文字で途中まで入力してTabキーを押して一気に入力し文字を変換しながら使うのがいいでしょう。(ちなみにそのまま全部小文字で入力しても問題無く動きます)
ちなみにget-cだけ入力してTabを押すと、候補となるコマンドレットが表示されます。そのままTabを押すと次の候補に切り替わっていきます。
そもそも、コマンドレットのようなものを一語一句間違えなく覚えている人は少数派だと思います。「とりあえずGet-Coのなんかだったような~」という曖昧な記憶しかないのが普通なので、本やネットで調べなくてもとりあえずTabを叩いておけば、なんとかなります。
この補完機能、ファルダやファイルも表示してくれるので、フォルダやファイルの操作でも非常に重宝します。

 

コマンドレットの体系

さてPowerShellが他のシェルと一番変わっているのが、その体系および文法です。通常シェルのコマンドといえば呪文のようで法則性が無い為それぞれ覚えるしかないのですが、コマンドレットの場合<動詞>-<名詞>で構成されているので、コマンドレットの名称を見るだけで何をしたいのかが掴めます。(Getであれば情報を取得する、Startだと開始するんだな~って感じでおおよそのイメージが掴めます)
もちろんこれには弊害もあって、所見でも分かりやすい反面入力する文字が増えてしまいます。例えば、コマンドプロンプトではフォルダの移動はcdの2文字で済んだのですが、PowerShellではSet-Locationで12文字です。長い!(実際はset-lまで入力してTabを押すので4文字+Tabで5文字分の入力となるかと思います)
そのような事もあり、またコマンドプロンプトで慣れ親しんだコマンドも使えるよう、実はPowerShellでもcdが使えます。これはAlias(別名)やFunction(関数)という形で用意されてしますので、そのような事も出来るのです。慣れてきたらよく使うコマンドレットは別名として登録しておけば、入力の手間も省けるでしょう(そんな難しい事ではないのですが、別名の登録方法は紹介しません。今回の記事はイメージを掴んでもらうのを主旨としているので……)。

 

ヘルプを使おう

コマンドレットの機能を調べるのはGet-Helpでその後に調べたいコマンドレットを入力します。
例えばGet-Commandであれば
Get-Help Get-Command

6
と入力します。っと、いきなりヘルプが用意されていませんね。こういうときには画面でも表示されているように、最後に-Onlineを追加します。
Get-Help Get-Command -Online
するとブラウザが起動し、Webページの説明画面に飛ばされます。

7
ヘルプファイルは無いのですが、コマンドレットで使えるオプションは表記されているので、これだけでもある程度は使えますね。前述の「Get-Command -CommandType Cmdlet」がフィルターをかけれる、というのも私はコレで知りました。
(本当はヘルプファイルをインストールする方法もあるのですが、色々と問題があるので今回は割愛します)
こんな感じでこのコマンドレットは何が出来るかというのを確認していきます。おそらく意味が分からない単語も登場し面喰いますが、少しずつその単語の意味を理解していけばよりWindowsに対しての知識も深まるでしょう。大抵はコマンドレットというよりWindowsにこんな機能があったのか、という発見が大半だと思います。

 

というわけでPowerShellのお味はいかがだったでしょうか。ヘルプが充実していないのが残念ですが、それは今後解決されていくものと考えています。
ちなみにPowerShellはコマンドレットの他、.NET Frameworkも使えるので開発者はさらに色々遊べるんじゃないでしょうか。最後に.NET Frameworkのコマンド例を紹介して、本ブログを締めたいと思います。

(IPアドレスを取得します)
[Net.Dns]::GetHostAddresses(”)
[Net.Dns]::GetHostAddresses(”).IPAddressToString
[Net.Dns]::GetHostAddresses(”).IPAddressToString[1]

でわでわ。

金曜日担当 Window開発チーム



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム