tech.guitarrapc.cóm

Technical updates

PowerShell ISE への アドオン ISESteroids を使ってみる

以前紹介した通り、私は 複数のファンクションを含む モジュールなど、ある程度規模が大きいスクリプト開発には 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円超えですか...

f:id:guitarrapc_tech:20140328072216p:plain

  • ISESteroidsTM Private Edition: で 9000円超え

f:id:guitarrapc_tech:20140328072308p:plain

うにゅん、結構な価格ですにぇ。

今回は トライアルで触ってみましょう。

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 に配置してみましょう。

f:id:guitarrapc_tech:20140328055124p:plain

PowerShell ISE の起動

モジュールを配置したら、Powershell ISE を起動してください。 Windows 8.1 なら以下のような方法ですね。

  • 方法1. Win + r で PowerShell_ISE と入力して実行
  • 方法2. powershell を起動して ise で呼び出す
ISESteroids の実行

PowerShell ISE が起動したら、以下のコマンドでモジュールが読み込まれて開始します。初回では、ライセンス表示がポップアップします。

Import-Module ISESteroids -Verbose

あるいは、以下でもいいですね。

Start-Steroids

f:id:guitarrapc_tech:20140328060036p:plain

実行するとどうなるの

簡単に使ってみた結果、見えた機能です。HPにまとまってないのでショウガナイ。

実行時の変化

PowerShell ISEは、標準ではこのようになっています。

f:id:guitarrapc_tech:20140328060333p:plain

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

f:id:guitarrapc_tech:20140328060422p:plain

変数のキャプチャ

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

f:id:guitarrapc_tech:20140328060607p:plain

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

f:id:guitarrapc_tech:20140328060702p:plain

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

f:id:guitarrapc_tech:20140328060748p:plain

ハイライト表示

PowerShell ISE は標準で、変数や文字列、ファンクションなどの シンタックスハイライトはされます。

ISESteroids を入れると、さらに parameterキーワードや [] 、あるいは () や {} などブロックとみなされる箇所がハイライト表示されます。

これは、 ファンクションを書いていて Parameter() のハイライトに助かりますね。

f:id:guitarrapc_tech:20140328061119p:plain

f:id:guitarrapc_tech:20140328061141p:plain

f:id:guitarrapc_tech:20140328061227p:plain

ファンクション一覧の取得

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

f:id:guitarrapc_tech:20140328061659p:plain

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

f:id:guitarrapc_tech:20140328061611p:plain

変数やファンクションを指定したり、正規表現を用いた検索機能

ファンクション名一覧の横には、スクリプトの検索窓があります。

ここでは 変数(variables)やファンクション名に絞った検索などが可能です。例えば、 inputcode という変数を検索すると、スクリプト内の該当箇所がハイライトされます。

f:id:guitarrapc_tech:20140328062623p:plain

メニューバーの追加

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

f:id:guitarrapc_tech:20140328062743p:plain

いろいろ触ってみるとわかりますが、 証明書サインがここからできたり、変数モニタータブを追加したりなど便利です。

PowerShell ISE に簡単なコード整形

文字寄せ程度ですが、コード整形もできます。

例えば縦がずれたここで、Align Assignment Operators を選択すると

f:id:guitarrapc_tech:20140328063255p:plain

縦がそろいます。

f:id:guitarrapc_tech:20140328063319p:plain

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

f:id:guitarrapc_tech:20140328064200p:plain

警告表示などのコード入力サポート

コードの波線部分を選択すると、 ISE のステータスバーに警告内容が表示されます。

さらに、右クリックすることで、修正候補が出ます。やったー。

f:id:guitarrapc_tech:20140328063958p:plain

修正も選ぶだけです。

f:id:guitarrapc_tech:20140328065957p:plain

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

f:id:guitarrapc_tech:20140328065858p:plain

オートコンプリート

メニューバーの、

f:id:guitarrapc_tech:20140328062810p:plain

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

f:id:guitarrapc_tech:20140328063518p:plain

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

f:id:guitarrapc_tech:20140328063538p:plain

プロファイルの中身を開く

メニューの File から、$profile に記述された内容を呼び出すことができるようになります。

f:id:guitarrapc_tech:20140328063731p:plain

$profile などに function をたくさん書いたりしてる人にはうれしいでしょうね。

選択部分の ファンクション化

おなじみのアレですね。

選択した部分を function に切りだしてくれます。

例えば、切り出したい部分を選択してTurn Into Function を選択

f:id:guitarrapc_tech:20140328064514p:plain

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

f:id:guitarrapc_tech:20140328064540p:plain

ほらできた。

f:id:guitarrapc_tech:20140328064602p:plain

うーん、便利。

MSDN や about_help へのリンク

.NET な部分を右クリックすると msdn の該当ページにリンクされます。

f:id:guitarrapc_tech:20140328065120p:plain

f:id:guitarrapc_tech:20140328065446p:plain

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

f:id:guitarrapc_tech:20140328065412p:plain

f:id:guitarrapc_tech:20140328065418p:plain

ILSpy でのデコンパイル

右クリックメニューの Source Code からは、 ILSpy でのコード表示もできます。

これを使えば PowerShell Cmdlet のデコンパイルも可能です。そう、まだ Referenceサイトでも公開されてないのが簡単に見れるのは素晴らしい....!

たとえば Get-ChildItem なら

f:id:guitarrapc_tech:20140329185927p:plain

やったね。

f:id:guitarrapc_tech:20140329185849p:plain

ライセンスの購入と有効化

ライセンスは、My-Commerce から購入となります。ドメイン参加PCは、ISESteroidsTM Professional しか動かいので、今回はこれです。

オーダー完了後は、ISESteroids_Professional.license として、ライセンスファイルがダウンロードできます。

あとは、Show-SteroidsLicense でライセンスを入れたり、確認したりしましょう。

簡単にやるなら、

  1. ISESteroids をおいたモジュールフォルダのLicense フォルダに、ダウンロードしたライセンスファイルを置きます
  2. PowerShell ISE を新規起動して、 Start-Steroids を実行します
  3. Show-SteroidsLicense でライセンスが ISESteroids Professional(active license) に変わっていれば ok です

f:id:guitarrapc_tech:20140329192151p:plain

どうやら ユーザーライセンスですが、 2台まででもあるようですね。

ISESteroids のオプション設定

以下のパスに xml 形式で保存されています。*4

$env:APPDATA\ISESteroids

# explorer からの場合
%APPDATA%\ISESteroids

f:id:guitarrapc_tech:20140329211319p:plain

開いてみるとこうです。

f:id:guitarrapc_tech:20140329211422p:plain

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

f:id:guitarrapc_tech:20140329211452p:plain

ここで インテンドサイズが 既定で 2なのを

<IndentSize>2</IndentSize>

4 スペース相当に変更できます。

<IndentSize>4</IndentSize>

まとめ

未実装ですが、 変数のリネームなどもメニューにあるようです。有料..... んー、体験版を使う限りいい感じの機能が多いですねー。 PowerSheller なアナタ。どうでしょうか。*5

リファクタリングや、ファンクションの切りだし、変数などの安全な変更は、PowerShell Tools for Visual Studio にも実装されるとうれしいです!

高いのか、安いのか。んー。私は会社で買ってほしいですね! *6

*1:Windows 7以降は 標準でついてくる 統合スクリプト開発環境 - Integrated Scripting Environment。

*2:Microsoft MVP だったり会社利用での割引もあるみたいですよ

*3:スクリプトファイル ps1 のゾーン情報がブロックになっているもの

*4:まだGUIでの提供はない

*5:だるやなぎせんせーがハイパー最強なPowerShellを書くと聞いて参考までにこの記事を書きました。

*6:もっとうれしいのは VS版で同等程度の機能があれば 絶対買います。速攻買います。