[PowerShell] PowerShell ってどんな感じ?

こんにちは、ILM一家のパパ(お父さん)です。
ご無沙汰しており恐縮です。

このところ、忙しくしていた我々 ILM一家ですが、この 5連休は追加の夏休みをいただいた感じです。
追加といっても、会社からいただいた夏休みが 2日残っていて如何しようか悩んでいる状況ですが...

この休みは、娘と ディズニーシーに行ってきました。
もう、半端な混み方ではなかったですね、200分待ちのアトラクションなど尋常ではありません。
ポップコーンも種類によっては買うのに 30分待ちとは、日本人はホント忍耐強い民族です。
私も、娘も、我慢が無いので、乗りたいものはファストパスで乗って、30分待ちぐらいのアトラクションしか並びませんでしたけど... それなりに乗り物乗って、ポップコーン二種類を含め一通り飲み食いできたので満足です。
それにしても歩きますね、車で行って徒歩はディズニーシーの中だけですが 26677歩記録されてます。1歩 60cm換算でも 16Km超えてて、さすがに疲れましたが、最近少し脱メタボをサボってたので丁度よい運動になりました。

さて今回は、この休みに少し PowerShell を Windows 7 で触ってみたので、感触をご紹介しましょう。
みなさん、PowerShell はお試しいただいていますでしょうか?
Windows Server 2008 から OS の追加機能となった PowerShell ですが、Windows 7 でも標準搭載されています。
(Windows Server 2003、Windows XP、Vista ではダウンロード入手いただくことで使用可能です)

Windows 上の 従来のコマンドラインプロンプト(CMD.EXE)では、コマンド機能が DOS 由来のもので、OS 管理機能の多くを、他の実行ファイル(exe)や、スクリプティング(スクリプティングからの COM 呼び出し)などに依存していました。
PowerShell では コマンドラインシェル(CUI)から、今まで、 他の実行ファイル(exe)や、スクリプティング(スクリプティングからの COM 呼び出し)などに依存していた部分を、コマンドレット(Cmdlet) で提供しています。
 
まず PowerShell を 今までの CMD.EXE に替え、コマンドラインシェルとして使用してみましょう。
Windows 7(手元では Ultimateを使用しています) のスタートメニューからは、管理ツール内の "Windows PowerShell Modules" で起動します。

PowerShell_01

起動すると、上記のようにコンソールが開き表示されますが、慌てる必要はありません。
指示通りに "get-help about_signing” と入力してみましょう。以下のようにヘルプ表示されます。

PowerShell_02

Windows 7 環境の既定では、スクリプトの実行権限が与えられていないので警告が出ていた状況ですが、ヘルプメッセージの通り、 ”set-executionpolicy remotesigned” で権限設定すれば、次回以降の PowerShell コンソールの起動で警告が表示されなくなります。
ここで、覚えておいて欲しいのは、判らなくいことは ”get-help" で確認すればよいということです。
”get-help” は引数に、使用したい不明な cmdlet、Alias、HelpFile (about_xxxxx)などを指定して、情報を引き出すことが可能です。

次に、ファイル参照してみましょう。従来の CMD.EXE のように "dir" も使用可能です。

PowerShell_03

PowerShell の "dir" はどのように機能提供されているのか、 ”get-help” してみましょう。

PowerShell_04 

"Get-ChildItem""dir" という エイリアスがマッピングされている事が判ります。
実際に "Get-ChildItem" でも同様の結果が取得されます。

PowerShell_05 

PowerShell では 、 "Get-ChildItem" で、指定したリソースの下位オブジェクトが参照可能です。さきほどの "dir" も実際には従来の “dir” ではありませんので、以下のようにレジストリ参照などもできてしまいます。

PowerShell_04b

ここでは、従来との違いを見て頂きたいために "dir" エイリアスを使いましたが、このような動きを考えると、PowerShell を使っていく上では、 "Get-ChildItem" を使用されたほうが構文上自然です。
参照したいレジストリパスが予め判っている場合、コマンドラインで操作できるのは便利ですね。

おまけですが、 "ls" エイリアスも用意されており、同様に "Get-ChildItem" にマップされています。
こちらの方が、違和感がない方もいるでしょうし、便利は便利です。

PowerShell_06

コマンドラインシェルとして、従来のコマンドプロンプト風に動かしてみましたが、いかがでしょうか。
ここまでで、興味がありましたら PowerShell コンソール上で "get-help *" を実行してみてください。既定で使用できる Alias、Cmdlet、HelpFile が列挙されます。さらに、詳細を知りたい場合、 ”get-help” の引数に、確認したい Alias、Cmdlet、HelpFile を指定して再実行すれば詳細が表示されます。    

PowerShell は今まで、コマンドラインやスクリプティングでできなかったことが実現可能です。
ILM 一家では、従来のスクリプトでの困りごとや、運用事例との対比で PowerShell の優位な部分について、ご紹介できればと考えています。

これから夏休みを取りたい
~ お父さんより ~