PowerShell スクリプトファイルを配布しろ!#3
帰ってきたゼ!この「スクリプトファイルを配布しろ!」シリーズ。
今回で第3弾だ。
第1弾のくそダサい方法から始って、第2弾ではスタイリッシュに進化を遂げた。
今回もスタイリッシュにいけるか?!
1.配布で重要視する点とは
さて、配布で重要視すべきを点を改めて確認したい。そう、実行ポリシーというものが存在するPowerShellにおいて。
いかに楽に実行してもらうか!
つまるところ、ダブルクリック実行ができるか否か。
しかし、ダブルクリック実行ができないPowerShellで、どうやってそれをクリアするか?そう、それこそがこの第3弾の命題だ。
2.どうやってダブルクリック実行するんや?!
ダブルクリック実行ができないなら、PowerShellでやることは諦める。できねぇものは仕方ねえゼ!
代わりに、PowerShellスクリプトを起動するためのスクリプトを、PowerShell以外で作ってしまえば良い。
今回はVBScriptを使用して起動用スクリプトを作り、配布するという例を取りあげてみたい。
3.VBScriptを用いた配布例
まずは、以下のようなフォルダ構成にする。
最終的にhogeフォルダだけまるごとコピーして配布すれば良いわけになる。
また、PowerShellスクリプト本体をScriptフォルダに入れておくのが俺的流儀である!
Run_hope.vbs
'====================================
' hope.ps1の起動用スクリプト
'====================================
Option Explicit
'FSOオブジェクト、Shellオブジェクト
Dim objFSO
Dim objShell
'VBSパス、VBS格納フォルダ、PS1パス
Dim strVBSPath
Dim strVBSFolder
Dim strPS1Path
'オブジェクト参照
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")
'VBSパス、VBS格納フォルダ、PS1パス
strVBSPath = Wscript.ScriptFullName
strVBSFolder = objFSO.GetFile(StrVBSPath).ParentFolder
strPS1Path = strVBSFolder & "¥Script¥hope.ps1"
'PS1起動オプション
Const OPT = "Powershell -ExecutionPolicy ByPass -NoExit "
'PS1起動
objShell.Run OPT & strPS1Path
'オブジェクト解放
Set objFSO = Nothing
Set objShell = Nothing
'終了
Wscript.Quit
・単なる起動用スクリプトのくせに、VBScriptゆえに記述が冗長である。
しかし、一度これを作ってしまえば、使い回しが効くので、そこは見て見ぬ振りをするのが男というものだ、と俺は思ふ。
・起動用オプションは、いつもだいたいこれが多く、状況に応じてカスタムする。
PowerShell -ExecutionPolicy ByPass -NoExit
ByPass:実行ポリシーの一番緩いやつ。
NoExit:実行後、プロンプトは勝手に閉じない。
VBScriptをダブルクリックすると、「ラーメン食いてぇ!」と10回表示された。
PowerShell、イエーイ!
▼過去記事はこちら
acoustic-groove2.hatenablog.com