検索
リンク
タグ
ASP.NET
.NET
ASP.NET MVC
F#
Visual Studio
Azure
ASP.NET Core
ライトニングトーク
Plone
AJAX
Selenium
C#
jQuery
ADO.NET Entity Framework
SQL Server
JavaScript
LINQ
WebMatrix
EFCore
Fizz-Buzz
カテゴリ
最新の記事
最新のコメント
記事ランキング
最新のトラックバック
以前の記事
2023年 01月 2022年 12月 2022年 11月 2022年 10月 2022年 09月 2022年 08月 2022年 07月 2022年 06月 2022年 05月 2022年 04月 2022年 03月 2022年 02月 2022年 01月 2021年 12月 2021年 11月 2021年 10月 2021年 09月 2021年 08月 2021年 07月 2021年 06月 2021年 05月 2021年 04月 2021年 03月 2021年 02月 2021年 01月 2020年 12月 2020年 11月 2020年 10月 2020年 09月 2020年 08月 2020年 07月 2020年 06月 2020年 05月 2020年 04月 2020年 03月 2020年 02月 2020年 01月 2019年 12月 2019年 11月 2019年 10月 2019年 09月 2019年 08月 2019年 07月 2019年 06月 2019年 05月 2019年 04月 2019年 03月 2019年 02月 2019年 01月 2018年 12月 2018年 11月 2018年 10月 2018年 09月 2018年 08月 2018年 07月 2018年 06月 2018年 05月 2018年 04月 2018年 03月 2018年 02月 2018年 01月 2017年 12月 2017年 11月 2017年 10月 2017年 09月 2017年 08月 2017年 07月 2017年 06月 2017年 05月 2017年 04月 2017年 02月 2017年 01月 2016年 12月 2016年 11月 2016年 10月 2016年 09月 2016年 08月 2016年 07月 2016年 06月 2016年 05月 2016年 04月 2016年 03月 2016年 02月 2016年 01月 2015年 12月 2015年 11月 2015年 10月 2015年 09月 2015年 08月 2015年 07月 2015年 05月 2015年 04月 2015年 03月 2015年 02月 2015年 01月 2014年 12月 2014年 11月 2014年 10月 2014年 09月 2014年 08月 2014年 06月 2014年 04月 2014年 03月 2014年 02月 2014年 01月 2013年 12月 2013年 10月 2013年 09月 2013年 08月 2013年 07月 2013年 06月 2013年 05月 2013年 04月 2013年 03月 2013年 02月 2013年 01月 2012年 12月 2012年 11月 2012年 10月 2012年 09月 2012年 08月 2012年 07月 2012年 06月 2012年 05月 2012年 04月 2012年 03月 2012年 02月 2012年 01月 2011年 12月 2011年 11月 2011年 10月 2011年 09月 2011年 08月 2011年 07月 2011年 06月 2011年 05月 2011年 04月 2011年 03月 2011年 02月 2011年 01月 2010年 12月 2010年 11月 2010年 10月 2010年 09月 2010年 08月 2010年 07月 2010年 06月 2010年 05月 2010年 04月 2010年 03月 2010年 02月 2010年 01月 2009年 12月 2009年 10月 2009年 09月 2009年 07月 2009年 06月 2009年 05月 2009年 04月 2009年 03月 2009年 02月 2009年 01月 2008年 12月 2008年 11月 2008年 10月 2008年 09月 2008年 08月 2008年 07月 2008年 06月 2008年 05月 2008年 04月 2008年 03月 2008年 02月 2008年 01月 2007年 12月 2007年 11月 2007年 04月 2007年 03月 2007年 02月 2007年 01月 2006年 11月 2006年 10月 2006年 09月 2006年 08月 2006年 07月 ファン
ブログジャンル
画像一覧
|
2011年 12月 03日
はじめに自分は各種ITインフラストラクチャやサーバーの設営管理も多少手がけてはいるが、ホームベースはあくまでも C# による ASP.NET Web アプリケーション開発である。開発環境は Visual Studio。 正直に言って、 かなり重度のインテリセンス中毒 である。 なので、たとえ IT インフラも手がけているとは言え、インテリセンスが無い PowerShell 環境では、なかなか学習曲線が上がらず、ついつい敬遠しがちである。 PowerShell 使ってもどうせ COM とか WMI 呼んじゃうんでしょ、だったら F# スクリプトのほうが、インテリセンスも構文カラー強調もリアルタイムエラー報告も Visual Studio で用意されてていいよね! などと、PowerShell ファンには大変申し訳ないことを吹聴していたりする。 そんな私が、なんと、 PowerShell Advent Calendar 2011 にエントリ したのだ!? Advent Calendar とは?Advent Calendar とは、12/1 からクリスマスである 12/25 までをカウントダウンしていくカレンダーなのだそうな。で、ここでいう "Advent Calendar" とは 各種 IT コミュニティやら何やらの集まりが、これになぞらえて、技術系 Advent Calendar と称して、12/1 から 25 に至るまで、リレー形式でなにかしらの技術テーマに沿ってブログ記事など投稿していくという "イベント" のことである。 去年の記事になるが、gihyo.jp の記事など参考まで。 本日12月1日より,プログラマ有志による技術系Advent Calendarが各所ではじまる http://gihyo.jp/news/info/2010/12/0102 "PowerShell Advent Calendar" とはその名のとおり、PowerShell をテーマにして、クリスマスまで、リレー形式でブログ記事など投稿しよう!というものだ。 現在も ATND で参加者募っているようなので(下記URL)、是非参加されたし。 PowerShell Advent Calendar 2011 http://atnd.org/events/22073 PowerShell ASPさていよいよ本題。あれだけ PowerShell を敬遠している自分。 しかし実はを言うと、前々からひとつ気になってしようが無いプロダクトがあるのだ。 その名も PowerShell ASP。 ここでいう "ASP" は Active Server Page の略、 "ASP.NET" の頭の ASP と同じ意味ですよ。 すなわち。 HTML の文中に、PowerShell のコードを記述する(!)ことで、動的 Web ページを作成できる、というのだ。 昔懐かしの ASP のような JScript や VBScript ではない。 現代の ASP.NET でのトレンドな C# や VB でもない。 PowerShell ですよ、PowerShell。 PowerShell で Web アプリを書くってどういうことですか一体。 ということで、実際に試してみた。 ダウンロードとインストール下記の InfoQ の記事を参考にするなど。InfoQ - Windows PowerShellを使用したASP.NET プログラミング http://www.infoq.com/jp/news/2008/07/PowerShellASP リンク先をたどると、PowerShell ASP の V3 がリリースされているというので、さらにそのリンク先をたどる。 下記ページにたどり着くので、同時接続数は1つに限定されるものの無償利用可能な Personal Edition をダウンロード。 http://www.powershellinside.com/powershell/asp/download.aspx インストーラの .exe ファイルがダウンロードされるので早速実行。 セットアップのウィザードに従って進めていく。 途中、IIS への設定らしき設問があるが、今回はお試しということでチェックを外して先へ進む。 難しいことはなく、普通にインストールは完了。 Web アプリの新規プロジェクト構築Visual Studio の利用は必須ではないが、とりあえず手慣れた環境なので、Visual Studio 上で進めてみる。なお、無償版である Visual Web Developer Express でもほぼ同様の手順で再現できるはず。 話が逸れたが、さて、早速まずは Visual Studio を起動。 新規プロジェクトの作成を実行し、.NET Framework のバージョンは 4、プロジェクトテンプレートから「ASP.NET 空の Web アプリケーション」を選択。 なお、言語は C# でも VB でもどちらでも関係ない(なんてったって、これから PowerShell で書くのだから)。 参照設定に PowerShellASP を追加新規プロジェクトが作成されたら、次は PowerShell ASP のランタイムを参照設定に追加して、この Web アプリプロジェクトに読み込むようにする。64bit 環境であれば C:\Program Files (x86)\PowerShellInside\PowerShell ASP V3\bin フォルダに「PowerShellASP.dll」が配置されているので、これを参照設定に追加する。 web.config の構成 - .ps1x ファイルの関連付設定次に web.config を書き換える。下記のとおり、httpHandlers セクションを追加し、拡張子 .ps1x への GET または POST 要求が発生したら、PwerShwllASP.dll に収録されている、PowerShellASP 名前空間の PSHandler クラスに、その要求の処理を任せるように設定。 <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpHandlers> <add path="*.ps1x" verb="GET,POST" type="PowerShellASP.PSHandler,PowerShellASP"/> </httpHandlers> </system.web> </configuration> 以上で環境設定は完了。 いよいよページを記述それでは、いよいよ PowerShell で Web アプリのページを記述していくのだ。新規アイテムの追加で、とりあえず HTML ページを追加する。 追加したら、ソリューションエクスプローラにて、この新規追加した HTML ファイルの名前を、"index.ps1x" に変更する。 続けて、次のように PowerShell のコードを書き足す。 ... </head> <body> <% ls c:\ | %{ %> <div><% $_ %></div> <% } %> </body> </html> パイプですよパイプ! それに "ls" とか! (※Microsoft 系のコマンドプロンプトのみご存じな方に説明すると、いわば dir に相当) よもや、HTML ページテンプレート内にパイプを記述する日が来るとは思ってもみなかった。 で、Ctrl + F5 などで実行。 残念ながら拡張子 .ps1x が動的 Web ページであることが Visual Studio はわかっていないので、まずは開発サーバーによるディレクトリ一覧が表示されてしまうが、ここで今作った index.ps1x をクリックすると... ![]() おお! 我が PC の Cドライブルートフォルダが丸見え! さすがサーバー管理系に強い PowerShell である。 同等の出力を行う C# による ASP.NET Web Page ( .cshtml ) を記述してコード量を比べようと思ったが、そもそもフォルダもファイルもひとつの一覧として抜き出したり、ファイル属性を "d-r--" 形式に書式化したり、それらファイルやフォルダごとの情報を連結したり... といったことを考えるだけで萎えてしまった。 開発元の公式ホームページにはほかにも、現在その OS で実行中のプロセス一覧をページ上に表示するなど、"このサーバーを攻撃してくれ" といわんばかりの、PowerShell ならではの危険な香りがそこはかとなくするサンプルも掲載されている。 以上、なかなかに愉快な、PowerShell ASP デビューの記録である。
by developer-adjust
| 2011-12-03 06:12
| その他IT系
|
Comments(0)
|
ファン申請 |
||