PowerShellスクリプトから実行形式ファイルを作る
目次
本エントリの概要
- PowerShellのスクリプトは.ps1ファイルでダブルクリックしても実行されません
- 一般的に実行するには「右クリックして[PowerShellで実行]する」か「他のbatファイルなどから呼び出す」必要があります
- これを配布するにあたって単体のファイルで済むようにする比較的「簡単な」方法を記録します
方法(ツール)
PowerGUI
- PowerGUIというツールがあって、そのツールでPowerShellソースからexeファイルを生成できてました。
- そのドメイン
powergui.org
もあったのですがどうも「Dellに買収されてまた手放された」ようなことらしく。 - Dellが手放した事業は「Quest.com」で今も継続しているのですが、その公式サイトを探しても PowerGUI は見当たらない。
- たぶんもう公開も開発もサポートもやめたのでしょう。
- 検索するとよくある「ソフトウェアダウンロードサイト」からそれらしきインストーラーは手に入るけど個人的に使う気になれず。
- セキュリティソフトにかけてもウィルスやトロイの類は検知しませんが、インストールは試していません。
- この方法は今回は遠慮します。
PS2EXE
- 検索するとPowerGUIの次に出てくるのがこのキーワード
- MicrosoftのTechNetに掲載されていたPowerShellスクリプトです
- ただ、
- 古い情報へ誘導されがち
- ちょっと日本語の情報が薄い
- QandAをちゃんと読まないと無理
- などなどあってちょっと苦労した
- のでこの記事を書こうと思いました
手順
ツールダウンロード
ここ要注意ポイントです。
- 検索結果のサイトから誘導されて開くと古いページにたどり着くことがあります
- このページから新しい方への誘導がすぐには見当たらないのです。
- ダウンロードは以下から
- このページを書いている時点での最新バージョンは「v0.5.0.13」です。動作確認も「v0.5.0.13」で行っています。
作業手順
- 変換したい対象のPowerShellスクリプトファイルを「source.ps1」として説明します
アイコンファイルを「sourceicon.ico」として説明します
- アイコンは必須ではありません
ダウンロードした圧縮ファイルの中から ps2exe.ps1 を取り出します
- source.ps1をUTF-8の文字コードで保存します
- source.ps1とsourceicon.icoとダウンロードしたps2exe.ps1を同じディレクトリに置きます
- PowerShellのCUIで保存したディレクトリに移動し以下のコマンドを実行します
.\ps2exe.ps1 .\source.ps1 .\実行形式にしたよver6.0.exe -title '実行形式にしたよ' -iconFile 'sourceicon.ico' -version '6.0.1.1' -product 'MγSQL6.0' -copyright 'dupont'
-title
以降のパラメーターは任意です- 他のパラメーターはダウンロードした圧縮ファイルの中から Usage.txt をご確認ください。
成果物
- 生成されたファイルのプロパティをみるとこうなってます
-company
などのパラメーターもあるのですが、指定してもここには表示されず、見る方法があるのかもわかりません。
ファイルを渡す方法
- 他のファイルをドラッグアンドドロップでこの実行ファイルに渡したい場合にはソースに以下のように書いておくとよいでしょう
$FilePath = $Args[0]; $FileItem = (Get-ChildItem $FilePath);
システム要件
- 私の環境でこのスクリプトによって生成したexeファイルを実行するにはPowerShell4.0がインストールされている必要がありました。
- Windows7などではこれが標準で入っていないので、使わせたい場合はWindows Management Framework 4.0をインストールする必要があります。
- インストール後再起動が必要だったり時間がかかったりするので、配布対象が多い場合は全くお勧めしません
世の中にこの件で恐らく少数ですがお困りの人がいるようなので検索用キーワードを入れておきます。
.ps1 .exeファイル化 実行可能ファイル 実行可能形式 コンパイル powergui