Windows PowerShellで遊んでみた!

マイクロソフトの畠山でございます。
しばらくさぼっておりました・・・急がしかったということに託けてすいません。でも、本当に忙しかったっです・・・
 
世間的には、Windows Vista / 2007 Office system (Office 2007とは言わないようです) のラウンチがありまして、企業のシステム担当者でもある皆様も、マイクロソフトの露出を目にされたものと思われます。と、同時に多くのお客様への情報発信の場をご提供いただきまして、本当に感謝しております。
 
今回もツールのご紹介を。
Windows PowerShell v1.0 です。
システム管理者の方であれば、各種コマンドラインツールをご利用になっているかと思います。UNIX系なら、なおさらですよね。昔からWindows Serverの管理をする上で、「シェルが弱いからねぇ」と言われておりましたが、Windows 2000、2003とマイクロソフトから標準提供されるコマンド数もかなり増加して、UNIX系とそん色ないと言えるかと思います。
WSH (Windows Scripting Host) もその中の一つで、皆様なじみ深いものになっていますでしょうか?どうでしょう?
 
さて、PowerShellですが、これまでの、コマンドラインシェル、WSHと、異なる部分があります。
これまでのものは、
 ジョブの実行結果を、テキストとして、次のジョブに渡す
が基本でしたよね? 最後のジョブの結果は標準だと画面に出力(UNIX系なら標準出力ですよね)しますので、出力先を切り替えると、ファイルに出したりできたわけです。UNIX系は、あらゆるものをファイルとして扱いますが、実際はファイルに出力して、以上終了が多かったのではないでしょうか?
PowerShellは
 ジョブの実行結果を、オブジェクトとして、次のジョブに渡す
ことを基本とします。
この違い、以下がその証拠になります。
 
ps | get-member 実行結果
ps (UNIX系のコマンドと同じもの使えそうです) の実行結果を、get-member ジョブに渡しています。"Definition"列をみてください。うんんんんん?これって、.NET Frameworkのオブジェクトですよね?実行結果として、オブジェクトが渡されていて、そのデータ型を表示しているわけです!
これは、すごい!今までとは一気に世界が変わってきます!
 
例えば、.NET Frameworkが提供しているクラスを直接使えるようにしてくれちゃったりしています。
 
[DateTime]::Now 実行結果

ということは、.NET Frameworkが提供してくれている、あるいは自作のライブラリ経由で、RDBMSとか、WebServiceとか、呼び出せそうです。

しかも、ファイルシステムだけではなくて、レジストリなどにもアクセスできます。

Get-PSProvider – cd HKCU: – ls 実行結果

使ってみて、さらに気に入ったことがあります。 
マニュアルを一読すると、以下の特徴があるそうです

・提供されているコマンドは、Get- もしくは Start-のように、動詞-名詞 の形式

これさえ覚えておけば、コマンド忘れたときに、なんと!、インテリセンスのように、入力支援機能があります。ためしに、"Get-"だけ入力して、[TAB]キーを押すと、次々と候補が表示されます!!!

それから、こんなことも書いてありました。

・エイリアス (別名) が設定可能

もともと、ps 自体はエイリアスで、Get-Processがその実態です。これも、Get-Alias で一覧表示できます。

いかがでしたでしょうか?様々な記事で、Windows PowerShell扱っているものが増えてきました。現時点で、以下の環境で動作します。
・Windows XP SP2
・Windows 2003 SP1
・Windows Vista -> 私はこの環境で遊んでおります
そして
・.NET Framework 2.0
がその実行環境として必要になってきます。
是非、皆さんも一度試してみてください!これ覚えちゃったら、コマンドシェルに戻れなくなります。

2007年2月2日
畠山大有

コメントを残す