Jaa


[TechEd] PowerShellについて

TechEdでリリース済みの動的言語ということでPowerShellを簡単に説明しました。PowerShellで実行できるコマンドには、以下の4種類があります。

  • コマンドレット:PowerShell独自のコマンドで「動詞-名詞」というネーミング。
  • 関数:一連の手続きに名前を付けたもの。
  • スクリプトコマンド:各種のコマンドなどをファイルに保存したもの。
  • ネイティブコマンド:実行可能プログラム(EXEなど)。

特にネイティブコマンドは重要で、これを使うと「cscript.exe xxxx.vbs」などのWSHのスクリプトをPowerShellの中から実行することができます。つまり、既存のスクリプト資産を移行しなくてもPowerShellで操作できるように配慮されているのです。

デモでお見せした電卓は、以下のようなものです。
wincalc 
これはWindows Formsを使って作成しています。このGUIを作成するときに特徴的な書き方をしているのが以下のようなコードです。

 ,"C"+1..3+,"/"+4..6+,"*"+7..9+,"-",0,".","=","+"|ForEach-Object {new-button $_}

 

「new-button」という関数をパイプラインで呼び出しています。パイプラインに渡している配列が、ボタンに表示されている文字列なんです。もちろんFor文やForEach文で作成するという方法もありますが、パイプラインを使ってForループと同じことができるんです。PowerShellって...

デモでは、このようなGUIのサンプルもお見せしましたが、PowerShellでのGUIプログラミングには、鬼門も潜んでいます。何かと言うとPowerShell.exeは、マルチスレッドで動作している点がGUIと相性が悪いのです。たとえばWindows FormsのWebBrowserコントロールなどは、シングルスレッドでないと利用することができないという制約を持っています。このようなコントロールを普通には扱えないのです。もちろん、独自のコマンドレットを使ったりすれば可能ですし、そういうコマンドレットを公開している方達もいらっしゃいます。

慣れてくると便利なツールです。PowerShellって。I-Oリダイレクションもサポートしていますし、CSVなどもサポートしていますから。色々な情報を集めてテキストファイルへ出力とかが簡単なんですね。

Comments