業務改善!Windows PowerShell入門

Windows PowerShellで、とにかく楽をしたい!実際に仕事で楽になった事、便利になった事を紹介しつつ進めていきます。

PowerShell スクリプトファイルを配布しろ!#3

 

帰ってきたゼ!この「スクリプトファイルを配布しろ!」シリーズ。

今回で第3弾だ。

 

第1弾のくそダサい方法から始って、第2弾ではスタイリッシュに進化を遂げた。

今回もスタイリッシュにいけるか?! 

 

1.配布で重要視する点とは

さて、配布で重要視すべきを点を改めて確認したい。そう、実行ポリシーというものが存在するPowerShellにおいて。

 

 

いかに楽に実行してもらうか!

 

 

つまるところ、ダブルクリック実行ができるか否か

しかし、ダブルクリック実行ができないPowerShellで、どうやってそれをクリアするか?そう、それこそがこの第3弾の命題だ。

 

2.どうやってダブルクリック実行するんや?!

ダブルクリック実行ができないなら、PowerShellでやることは諦める。できねぇものは仕方ねえゼ!

代わりに、PowerShellスクリプトを起動するためのスクリプトを、PowerShell以外で作ってしまえば良い。

 

今回はVBScriptを使用して起動用スクリプトを作り、配布するという例を取りあげてみたい。

 

3.VBScriptを用いた配布例

まずは、以下のようなフォルダ構成にする。 

C:¥hoge
│  Run_hope.vbs

└─Script
        hope.ps1       

 

最終的に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

 

 f:id:acoustic_groove:20171129014757p:plain

 

 ・単なる起動用スクリプトのくせに、VBScriptゆえに記述が冗長である。

しかし、一度これを作ってしまえば、使い回しが効くので、そこは見て見ぬ振りをするのが男というものだ、と俺は思ふ。

 

・起動用オプションは、いつもだいたいこれが多く、状況に応じてカスタムする。

PowerShell -ExecutionPolicy ByPass -NoExit

ByPass:実行ポリシーの一番緩いやつ。

NoExit:実行後、プロンプトは勝手に閉じない。 

 

VBScriptをダブルクリックすると、「ラーメン食いてぇ!」と10回表示された。

 

PowerShell、イエーイ!

 

 

▼過去記事はこちら

acoustic-groove2.hatenablog.com