以前紹介した通り、私は複数のファンクションを含むモジュールなど、ある程度規模が大きいスクリプト開発にはVisual Studio 2013 + PowerShell Tools for Visual Studioを利用しています。
なぜISEでモジュールなど、規模の大きいスクリプトを書かないかというと、デバッグやファイルを横断した操作、プロジェクトシステム、そしてVisual Studioでの開発に一元化したいためです。
もちろん、さくっとスクリプトを書いたり、実行、デバッグなどはPowerShell ISE*1 を利用しています。
ただ、標準のPowerShell ISEにはスクリプト開発に欲しい機能がまだまだ多くあります。
- 変数の状態が可視化
- ファンクションの一覧取得
- コード整形機能
- シンタックスハイライトの強化
- 他
先日2014/3/27についに β版から正式リリースされたISESteroidsは、そんなPowerShell ISEに機能を追加し、よりスクリプト開発をしやすくするためのアドオンです。
早速どんなものなのかを見てみましょう。
ISESteroids の概要
ISESteroids は PowerShell ISE へのアドオン
ISESteroidsは、ドイツのDr. Tobias Weltnerによって開発されているバイナリモジュールです。
このモジュールを利用することで、PowerShell ISEで以下をはじめとする恩恵を得ることができます。
- 変数のキャプチャ
- ハイライト表示
- ファンクション一覧の取得
- 変数やファンクションを指定したり、正規表現を用いた検索機能
- メニューバーの追加
- PowerShell ISEに簡単なコード整形
- 警告表示などのコード入力サポート
- オートコンプリート
- プロファイルの中身を開く
- 選択部分のファンクション化
- MSDNやabout_helpへのリンク
- ILSpyでのデコンパイル
- 他
早速、ざっと見てみましょう。
ISESteroids
氏のホームページで公開されています。
動作環境
PowerShell 3.0か4.0のPowerShell ISEで動作します。
ライセンス
本アドオンは、ユーザーライセンスがいります。が、トライアルとして10日間利用できます。詳しくは氏のHPで。*2
- ISESteroidsTM Professional: で15000円超え

- ISESteroidsTM Private Edition: で9000円超え

うにゅん、結構な価格です。
今回はトライアルで触ってみましょう。
PowerShell ISE で利用するまでの流れ
簡単にインストール手順を見てみましょう。
外部スクリプトを実行できるように権限を設定する。
前提として、 PowerShellで外部スクリプトを読み込めるようにExecutionPolicyを変更しておいてください。
例えば、ローカルで作成したps1は実行可能で、ダウンロードしたps1 *3 は実行できないようにするならRemoteSignedです。
Set-ExecutionPolicy RemoteSigned
ISESteroids の ダウンロード
まずは、氏のホームページからモジュールをダウンロードします。
ページ下部にあるISESteroidsから2014/Mar/28現在v1.0.0がダウンロード可能です。
モジュールへの配置
ダウンロードしたzipファイルを解凍して、モジュールパス ($env:PSModulePath) のいずれかに配置します。
今回は、 %UserProfile%\Documents\WindowsPowerShell\Modulesに配置してみましょう。

PowerShell ISE の起動
モジュールを配置したら、Powershell ISEを起動してください。 Windows 8.1なら以下のような方法ですね。
- 方法1. Win + rでPowerShell_ISEと入力して実行
- 方法2. powershellを起動してiseで呼び出す
ISESteroids の実行
PowerShell ISEが起動したら、以下のコマンドでモジュールが読み込まれて開始します。初回では、ライセンス表示がポップアップします。
Import-Module ISESteroids -Verbose
あるいは、以下でもいいですね。
Start-Steroids

実行するとどうなるの
簡単に使ってみた結果、見えた機能です。HPにまとまってないのでショウガナイ。
実行時の変化
PowerShell ISEは、標準ではこのようになっています。

ISESteroidsを読み込むと上部に検索窓が追加されます。

変数のキャプチャ
変数で右クリックするとmonitorというメニューがコンテキストに追加されています。

実行すると、ISEの右側にあったCommandタブへVariablesタブが追加されます。

ここに選んだ変数がモニターされて、実際に変数に格納するとキャプチャされるのがわかります。

ハイライト表示
PowerShell ISEは標準で、変数や文字列、ファンクションなどのシンタックスハイライトはされます。
ISESteroidsを入れると、さらにparameterキーワードや[]、あるいは () や {} などブロックとみなされる箇所がハイライト表示されます。
これは、 ファンクションを書いていてParameter() のハイライトに助かりますね。



ファンクション一覧の取得
PowerShell ISEのタブのすぐ下に、現在カーソルがある箇所のファンクションが表示されたり、

スクリプトに記述されているファンクションが一覧取得できます。

変数やファンクションを指定したり、正規表現を用いた検索機能
ファンクション名一覧の横には、スクリプトの検索窓があります。
ここでは変数(variables)やファンクション名に絞った検索などが可能です。例えば、 inputcodeという変数を検索すると、スクリプト内の該当箇所がハイライトされます。

メニューバーの追加
見慣れぬメニューバーが追加されます。

いろいろ触ってみるとわかりますが、 証明書サインがここからできたり、変数モニタータブを追加したりなど便利です。
PowerShell ISE に簡単なコード整形
文字寄せ程度ですが、コード整形もできます。
例えば縦がずれたここで、Align Assignment Operatorsを選択すると

縦がそろいます。

他にも、選択部分の縦をそろえたりもできます。

警告表示などのコード入力サポート
コードの波線部分を選択すると、 ISEのステータスバーに警告内容が表示されます。
さらに、右クリックすることで、修正候補が出ます。やったー。

修正も選ぶだけです。

ステータスバーの説明にあるReadMoreからは、なぜそうしたほうがいいのかのページに飛びます。

オートコンプリート
メニューバーの、

アイコンを選択すると、オートコンプリートメニューがでます。

ISESteroidsの標準で有効ですが、{をいれると自動的に{}に補完されるなど補助をしてくれます。

プロファイルの中身を開く
メニューのFileから、$profileに記述された内容を呼び出すことができるようになります。

$profileなどにfunctionをたくさん書いたりしてる人にはうれしいでしょうね。
選択部分の ファンクション化
おなじみのアレですね。
選択した部分をfunctionに切りだしてくれます。
例えば、切り出したい部分を選択してTurn Into Functionを選択

function名やパラメータを設定します。

ほらできた。

うーん、便利。
MSDN や about_help へのリンク
.NETな部分を右クリックするとmsdnの該当ページにリンクされます。


Operatorではabout_operatorが表示されます。


ILSpy でのデコンパイル
右クリックメニューのSource Codeからは、 ILSpyでのコード表示もできます。
これを使えばPowerShell Cmdletのデコンパイルも可能です。そう、まだReferenceサイトでも公開されてないのが簡単に見られるのは素晴らしい....!
たとえばGet-ChildItemなら

やったね。

ライセンスの購入と有効化
ライセンスは、My-Commerceから購入となります。ドメイン参加PCは、ISESteroidsTM Professionalしか動かいので、今回はこれです。
オーダー完了後は、ISESteroids_Professional.licenseとして、ライセンスファイルがダウンロードできます。
あとは、Show-SteroidsLicenseでライセンスを入れたり、確認したりしましょう。
簡単にやるなら、
- ISESteroidsをおいたモジュールフォルダのLicenseフォルダに、ダウンロードしたライセンスファイルを配置
- PowerShell ISEを新規起動して、
Start-Steroidsを実行 Show-SteroidsLicenseでライセンスがISESteroids Professional(active license) に変わっていればok

どうやらユーザーライセンスですが、 2台まででもあるようですね。
ISESteroids のオプション設定
以下のパスにxml形式で保存されています。*4
$env:APPDATA\ISESteroids # explorer からの場合 %APPDATA%\ISESteroids

開いてみるとこうです。

VSで開いてもいいですね。

ここでインテンドサイズがデフォルトで2なのを
<IndentSize>2</IndentSize>
4スペース相当に変更できます。
<IndentSize>4</IndentSize>
まとめ
未実装ですが、 変数のリネームなどもメニューにあるようです。有料..... んー、体験版を使う限りいい感じの機能が多いですねー。 PowerShellerなアナタ。どうでしょうか。*5
リファクタリングや、ファンクションの切りだし、変数などの安全な変更は、PowerShell Tools for Visual Studioにも実装されるとうれしいです!
高いのか、安いのか。んー。私は会社で買ってほしいですね! *6