tech.guitarrapc.cóm

Technical updates

PowerShellエディタ環境のPowerGUIをインストールしてPowerShell3.0として起動する

PowerShell 触ってますか? シェル芸って楽しいですね!! シェル芸に限らずPowerShellはスクリプトをパイプで組み合わせることが楽しいと感じれます。

さて、スクリプトを書く時、皆さんはどうされていますか?

  • PowerShell (CUI環境)ですか?
  • それともPowerSehll ISE (Windows PowerShell Integrated Scripting Environment) (GUI環境)ですか?

私は初めてPowerShellに触ったのはCUIから、PowerShell V3.0からはPowerShell ISEがまともになったのでISE採用してきました。

しかし、定番とも言われているPowerGUI というフリーのPowerShell GUI環境を試してから移行を考えています。 今回は、PowerGUIのインストールを行ったのでインストール作業を紹介します。 

PowerGUIとは

PowerGUIは、PowerShell ISE V3.0に似た見た目を持ったGUIでのPowerShellスクリプト構築環境です。 機能は豊富で、操作も似通っているので以降は容易です。

PowerGUIのメリット

数日使ってみて感じたメリットは以下です。

  1. ISEと似通った画面構成のため、ISEユーザーには移行が容易
  2. 変数一覧と変数への格納状態が一発で分かる
  3. ISE同様にコマンド入力中のIntellisenceが効く
  4. ISEでできないキーボードショートカットなどのカスタマイズが可能
  5. Code Snipetがコンテンツ分類されていて使いやすい
  6. ISEでAdd-Typeでdll読込み時に動作が止まってもPowerGUIでは動く
  7. PowerGUI Administrative ConsoleによるGUIでのシステム管理が使える
  8. FindAdd-ons olineでAdd-onが追加可能(ISEにも似たのがありますね)
  9. Run on Remote Systemで「リモートPowerShellタブの作成」代わりが可能
  10. Compile機能で作成したps1やdllをひとまとめにしてexe配布可能(Pro限定)
  11. .ps1ファイルと拡張子が紐付けられてメモ帳ではなくScriptEditroが起動

特にPro限定とはいえ、Compileすることでexe配布可能なのは非常に便利です。 PowerShellユーザーならご存じのSet-ExecutionPolicyの問題も回避できるという……。

PowerGUIのデメリット

もちろんデメリットというかISEに慣れていると違うと感じる点もあります。

特にTabでのIntellisenceが無いこと、デバック中のコード変更不可は、癖でナカナカ慣れません。 PowerGUIのScriptEditorの起動バージョンをV3.0相当にする方法は後述のやり方で回避可能です。

  1. Tabでの手動Intellisenceは効かずCtrl+SpaceのComplete Wordを使う
  2. Intellisenceがcommandletの動詞-名詞の間にある"-"のタイミングで有効
  3. ISE 3.0のような関数一覧画面はない
  4. ISEのConsole画面をClear-Hostするボタンはない
  5. ISEの高度な関数のスニペットと同等のスニペットはない
  6. PowerGUI V3.5.0.2293のScriptEditorがPowerShell 2.0相当3.6.0でPowerShell3.0に対応しましたPowerShell3.0にPowerGUIが対応
  7. デバック実行中にコードの変更はできない

PowerGUIのダウンロード

更新が非常に活発なので、どんどんバージョンが上がります。 本記事は、PowerGUI V3.5.0.2293でのインストールを示すものですので、あらかじめご了承ください。

※ 3.6.0.8 でも変わらないことを確認しています。

 

PowerGUIの最新版は、公式HPからダウンロードが可能です。

PowerGUI.org - Free Windows Powershell Community

ダウンロード方法

定番ですが、各自の責任でお願いします。

  1. 画面上部のLatest Build VersionからDownloadボタンでダウンロード
  2. Downloadsページからダウンロード

PowerGUIのインストール

ダウンロードしたインストーラーを実行します。

PowerGUIのインストーラー実行

1. インストーラーを起動してNextを選択。

2. ライセンス承認画面です。同意したらNextを選択。

3. レジストリに書き込まれているWindowsのユーザー名、会社名が入力されてます。ご随意にしてNextを選択。

4. インストールする機能を選択し、Nextを選択。

VMWare vSphhere Client integrationもあります。 PowerPacksのツリーボックスを開くと、ActiveDirectoryやExchange2007やVMWareも出てきますが、AD機能がインストールされていないと選択してもインストール出来ません。

5. 匿名情報として、PowerGUI利用中でオンライン時に利用している機能を送信されますという事です。Nextを選択。

これは、インストール後に以下のオプションを外すことで無効に出来ます。

PowerGUI ScriptEditor | Tools | Options | General | Collect anonymous usage data and submit it while I'm online

 

6. Nextでインストールが始まります。インストールパスは選べませ!

7. インストール中……私は管理者実行し忘れたので、インストール途中でUACポップアップが出ました。

8. インストール完了です。Finishを選択で閉じます。

Launch the following application after installationで選択しているPowerGUIモジュールを、インストーラ終了時に起動させることができます。

PowerGUIの実行前に

本内容は、PowerGUI 3.6.0で改善されています。 以下を参照して下さい。

PowerShell3.0にPowerGUIが対応

PwoerGUIの実行前に小細工をします。 コレには、デメリットで挙げた、デフォルトのScript EditorではPowerShell 2.0環境になってしまう問題への回避方法を含みます。

アプリケーションのWindows 8タイルでの配置

Windows8なら、PowerGUIアプリケーションがスタートメニュー内にタイルで表示されます。

私はPowerGUIとグループに名前を付けています。

アプリケーションのWindows 8デスクトップでのタスクバー表示

また、よく利用するアプリケーションを右クリックすればデスクトップのタスクバーに表示も可能です。 私は、x64版のScript Editorを最も利用するのでタスクバーに表示…してますが、この後の小細工を行っています。

Script EditorがPowerShell 2.0で起動しちゃう

試していただくと分かりますが、デフォルトのPowerGUI Script EditorはPowerShell 2.0で起動します。Windows8などは、デフォルトで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 V3.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と引数付きで起動するのです。 つまり以下の手順です。

1. デスクトップなどにショートカットを作成します。

2. プログラムパスにPowerGUI\ScriptEditor.exeを選択し、末尾に-version 3.0とします。 ※Windows8 x64の場合は、Program Files (x86)\PowerGUIにあります。 ※Windows8 x86の場合は、Program Files\PowerGUIにあります。

"C:\Program Files (x86)\PowerGUI\ScriptEditor.exe" -version" 3.0

3. 好きな名前でショートカットを付けます。 ※私はStart Menu経由でTask Barにも表示するため、PowerGUI ScriptEditor 3.0としています。

4. 作成した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をスタートメニューに置きたい

1. Windows8のタイルに作成したショートカットを置く場合は、以下のパスに作成したショートカットをコピーします。

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\PowerGUI\x86

 

2. Windows8 Tileに表示されます。

Script Editor 3.0をタスクバーに置きたい

作成したWindows8タイル上の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を置いてしまって起動しましょう。

1. 「Win+r」でファイル名を指定して実行を開きます。

2. 以下のコマンドで「送る」を開きます。

shell:sendto

3. 開いたパスに、作成したPowerGUI Script Editor 3.0のショートカットを置きます。

4. これで、ps1を右クリックして「送る」を選ぶと、PowerGUI Script Editor 3.0でPowerShell3.0として起動できます。

5. 勿論バージョンも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で設定します。

2. General

Allow only one instance of a program to run - 無効にすると複数のScriptEditorを起動出来ます。 Language 言語です。え?日本語?使えますけど…使うんですか? At startup Show empty environmentにしておくと、前回起動時のScriptではなく、空白のスクリプトエディタを起動します。 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を案内しておきます。

PowerGUI - Editing scripts