PowerShell触ってますか? シェル芸って楽しいですね。シェル芸に限らず、PowerShellはスクリプトをパイプで組み合わせることが楽しいです。
さて、スクリプトを書く時、皆さんはどうされていますか?PowerShell (CUI環境)ですか?それともPowerSehll ISE (Windows PowerShell Integrated Scripting Environment) (GUI環境)ですか?
私は初めてPowerShellに触ったのはCUIから、PowerShell 3.0からはPowerShell ISEがまともになったのでISE採用してきました。 しかし、定番とも言われているPowerGUIというフリーのPowerShell GUI環境を試してから移行を考えています。 今回は、PowerGUIのインストールを行ったのでインストール作業を紹介します。
PowerGUIとは
PowerGUIは、PowerShell ISE V3.0に似た見た目を持ったGUIでのPowerShellスクリプト構築環境です。 機能は豊富で、操作も似通っているので以降は容易です。
PowerGUIのメリット
数日使ってみて感じたメリットは以下です。
- ISEと似通った画面構成のため、ISEユーザーには移行が容易
- 変数一覧と変数への格納状態が一発で分かる
- ISE同様にコマンド入力中のIntellisenceが効く
- ISEでできないキーボードショートカットなどのカスタマイズが可能
- Code Snipetがコンテンツ分類されていて使いやすい
- ISEで
Add-Typeを使ってdll読込み時に動作が止まってもPowerGUIでは動く - PowerGUI Administrative ConsoleによるGUIでのシステム管理が使える
- FindAdd-ons olineでAdd-onが追加可能(ISEにも似たのがありますね)
- Run on Remote Systemで「リモートPowerShellタブの作成」代わりが可能
- Compile機能で作成したps1やdllをひとまとめにしてexe配布可能(Pro限定)
- .ps1ファイルと拡張子が紐付けられてメモ帳ではなくScriptEditroが起動
特にPro限定とはいえ、Compileすることでexe配布可能なのは非常に便利です。 PowerShellユーザーならご存じのSet-ExecutionPolicyの問題も回避できるという……。
PowerGUIのデメリット
もちろんデメリットというかISEに慣れていると違う点もあります。 特にTabでのIntellisenceが無いこと、デバッグ中のコード変更不可は、癖でナカナカ慣れません。 PowerGUIのScriptEditorの起動バージョンをV3.0相当にする方法は後述のやり方で回避可能です。
- Tabでの手動Intellisenceは効かずCtrl+SpaceのComplete Wordを使う
- Intellisenceがcommandletの動詞-名詞の間にある"-"のタイミングで有効
- ISE 3.0のような関数一覧画面はない
- ISEのConsole画面をClear-Hostするボタンはない
- ISEの高度な関数のスニペットと同等のスニペットはない
- 3.6.0でPowerShell3.0に対応しましたPowerShell3.0にPowerGUIが対応
- デバッグ実行中にコードの変更はできない
PowerGUIのダウンロード
更新が非常に活発なので、どんどんバージョンが上がります。 本記事は、PowerGUI V3.5.0.2293でのインストールを示すものですので、あらかじめご了承ください。
※ 3.6.0.8 でも変わらないことを確認しています。
PowerGUIの最新版は、公式HPからダウンロードが可能です。
PowerGUI.org - Free Windows Powershell Community
ダウンロード方法
定番ですが、各自の責任でお願いします。
- 画面上部のLatest Build VersionからDownloadボタンでダウンロード
- Downloadsページからダウンロード
PowerGUIのインストール
ダウンロードしたインストーラーを実行します。
PowerGUIのインストーラー実行
- インストーラーを起動してNextを選択
- ライセンス承認画面で同意、Nextを選択
- レジストリに書き込まれているWindowsのユーザー名、会社名が自動入力される。ご随意にしてNextを選択
- インストールする機能を選択し、Nextを選択
VMware vSphhere Client integrationもあります。 PowerPacksのツリーボックスを開くと、ActiveDirectoryやExchange2007やVMWareも出てきますが、AD機能がインストールされていないと選択してもインストール出来ません。
- Nextを選択
匿名情報として、PowerGUI利用中でオンライン時に利用している機能を送信してそうですが、インストール後に以下のオプションを外すことで無効に出来ます。
PowerGUI ScriptEditor > Tools > Options > General > Collect anonymous usage data and submit it while I'm online
- Nextでインストールが開始。インストールパスは選べません
- インストール中。私は管理者実行し忘れたので、インストール途中でUACポップアップが出ました
- インストール完了
Finishを選択で閉じます。Launch the following application after installationで選択しているPowerGUIモジュールを、インストーラ終了時に起動させることができます
PowerGUIの実行前に
本内容は、PowerGUI 3.6.0で改善されています。 以下を参照して下さい。
PwoerGUIの実行前に小細工をします。 コレには、デメリットで挙げた、デフォルトのScript EditorではPowerShell 2.0環境になってしまう問題への回避方法を含みます。
アプリケーションのWindows 8タイルでの配置
Windows 8なら、PowerGUIアプリケーションがスタートメニュー内にタイルで表示されます。 私はPowerGUIとグループに名前を付けています。
アプリケーションのWindows 8デスクトップでのタスクバー表示
また、よく利用するアプリケーションを右クリックすればデスクトップのタスクバーに表示も可能です。 私は、x64版のScript Editorを最も利用するのでタスクバーに表示…してますが、この後の小細工します。
Script EditorがPowerShell 2.0で起動しちゃう
試していただくと分かりますが、デフォルトのPowerGUI Script EditorはPowerShell 2.0で起動します。Windows 8などは、デフォルトでPowerShell3.0な訳で、このままではPowerShell ISEから移行する価値が減ります。 どういうことか確認しましょう。 デフォルトのPowerGUIでの$PSVersionTableを確認すると…。
$PSVersionTable
するとPSVersion2.0とのこと…ぐぬぬ。
Name Value ---- ----- PSVersion 2.0 PSCompatibleVersions {1.0, 2.0} BuildVersion 6.1.7600.16385 CLRVersion 4.0.30319.18033 WSManStackVersion 2.0 PSRemotingProtocolVersion 2.1 SerializationVersion 1.1.0.1
当然PowerShell 3.0でのスクリプト起動制限を掛けようとすると…
#requires -Version 3.0
バージョン制限のScriptRequiresUnmatchedPSVersionエラーが出ます。
. : The script 'xxxxx.ps1' cannot be run because it contained a "#requires" statement at line 1 for Windows PowerShell version 3.0. The version required by the script does not match the currently running version of Windows PowerShell version 2.0. At line:1 char:2 + . <<<< 'xxxxx.ps1' + CategoryInfo : ResourceUnavailable: (c7ed7a0e-2fdb-4996-85f8-6537d65f5d78.ps1:String) [], ScriptRequiresException + FullyQualifiedErrorId : ScriptRequiresUnmatchedPSVersion
Script EditorをPowerShell 3.0で起動する
では、Script EditorをPowerShell 3.0で起動します。 注意: 現在PowerShell3.0として起動させるといくつかのモジュールが動かないかもとのことですので…自己責任で まず以下のサイトのやり方は、ScriptEditorのコンフィグを触ってしまうので嫌です。
Make PowerGUI 3.0 work with PowerShell 3.0
もっといいやり方がPowerGUIの公式フォーラムにあります。
Forums » PowerGUI User Discussions » Thread: Script Editor Support For PowerShell 3.0
どうやるのか?
簡単です。ScriptEditor.exeに-Version 3.0と引数付きで起動します。
- デスクトップなどにショートカットを作成
- プログラムパスにPowerGUI\ScriptEditor.exeを選択し末尾に
-version 3.0追加
※ Windows 8 x64の場合は、Program Files (x86)\PowerGUIにあります。 ※Windows 8 x86の場合は、Program Files\PowerGUIにあります
"C:\Program Files (x86)\PowerGUI\ScriptEditor.exe" -version 3.0
- 好きな名前でショートカット追加
- 作成したPowerGUI ScriptEditor 3.0を実行すると、以下の通りPowerShell3.0環境で起動
$PSVersionTable
PSVersionが3.0になっていますね!
Name Value ---- ----- PSVersion 3.0 WSManStackVersion 3.0 SerializationVersion 1.1.0.1 CLRVersion 4.0.30319.18033 BuildVersion 6.2.9200.16434 PSCompatibleVersions {1.0, 2.0, 3.0} PSRemotingProtocolVersion 2.2 SDKVersion 1.0 PGVersion 3.5.0.2293
Script Editor 3.0をスタートメニューに置きたい
- Windows 8のタイルに作成したショートカットを置く場合は、以下のパスに作成したショートカットをコピー
- Windows 8 Tileに表示
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\PowerGUI\x86
Script Editor 3.0をタスクバーに置きたい
作成したWindows 8タイル上のPowerGUI ScriptEditor 3.0を右クリックして、タスクバーにピン留めしましょう。 これで、PowerGUI ScriptEditorがPowerShell3.0としてタスクバーにピン留めされます。
Script Editor 3.0を送るに置きたい
実はこのままでは、PowerGUI Script Editor3.0で起動してps1を読み込まないと、せっかくの3.0環境ではなく2.0環境でファイルが開かれます。また、PowerGUI Script Editorは、ただ起動してもps1のパスには行かないので不便です。 そこで、「送る」にPowerGUI Script Editor 3.0を置いてしまって起動しましょう。
- 「Win+r」でファイル名を指定して実行を開く
shell:sendtoを「送る」で開く- 開いたパスに、作成したPowerGUI Script Editor 3.0のショートカットを置く
- これで、ps1を右クリックして「送る」を選ぶと、PowerGUI Script Editor 3.0でPowerShell3.0として起動
バージョンもPowerShell 3.0ですね!
ただし、パスはスクリプトのパスではなくProgram Filesです。 これはcd "Script Path"を一々するしかないのでしょうか。
PowerGUIを実行してみる
ここでは、PowerGUI Script Editorでの実行のみ説明します。
ScriptEditorの実行
作成したPowerGUI ScriptEditor 3.0でも、元のものでも好きな方を実行してください。 初期起動時はスタートアップページが、左上に表示しています。 右には、変数の一覧が表示します。 下にはConsole画面です。ISEと異なり、ユーザーのコンソールへの入力はConsole画面の最下部で行います。
ScriptEditorのオプション
簡単にオプションのGeneralだけ説明します。 1. Tools | Optionsで設定します。
General > Allow only one instance of a program to run
無効にすると複数のScriptEditorを起動出来ます。
General > Language
言語です。日本語使えます。
General > At startup** Show empty environment
前回起動時のScriptではなく、空白のスクリプトエディタを起動します。
General > Collect anonymous usage data and submit it shile I'm online
先述の、匿名情報の送信です。お好きにどうぞ。
ScriptEditor起動時のStart Pageを消したい
オプションのStart Pageにある次のオプションを無効にします。
Show Start Page at application startup
PowerGUIでスクリプトを書いて見る
普通にインテリセンスも効きますし、PowerShell ISEと同じ感覚でどうぞ。 また、記述途中で、ポップアップ表示してくれるのはVSと似てていいですね!
PowerGUIでスクリプトを実行する
実行に際しては、DebugやStep into、Execute Selectionなど大事な事は押さえられています。 コンソール画面が青背景じゃないのが気にくわないのですが…ぐぬぬ…無料では編集出来ないようです。 ここはPowerShell ISE 3.0に劣りますね…。
まとめ
これぐらい初めて使う環境は出来そうです。 あとは使う人のPowerShellライフでどう活用するかですね! スクリプト記述の参考までに、PowerGUIの公式Wikiを案内しておきます。