20
25

.ps1をダブルクリックで実行したい

Posted at

今更のネタですが、先日思い出すのが面倒だったので書き留めておこうと思いました。


.ps1 はセキュリティやら何やらの都合で、単純にダブルクリックするだけでは実行できないようになっています。

ただ、実用的にはダブルクリックで実行できた方が使い勝手が良いことも多いです。

直接実行できないのであれば、伝統的な .bat から呼び出してやれば良いのです。簡単ですね。

以下のバッチファイルは、同じフォルダの同じファイル名(%~dpn0)の .ps1 ファイルを実行します。

@echo off
powershell -ExecutionPolicy Bypass -NoProfile -File %~dpn0.ps1 %*

if %errorlevel% neq 0 (
    rem 終了コードが 0 以外の場合は一時停止する
    pause
)

また、フォルダの中にいくつも .ps1.bat が並ぶと見苦しいので、.ps1 は別のフォルダにまとめたいときがあります。

例えば ps1 フォルダにまとめたいときは、パスの部分を以下のように調整します。

@echo off
rem 暗号のように見える部分について
rem %0 は実行されているバッチファイル自身を表します
rem ~ は書式オプションを使う場合に指定します
rem dp は %0 の設置されているディレクトリパスを示す書式オプションです。
rem n は %0 の拡張子無しのファイル名を示す書式オプションです。
rem powershell -ExecutionPolicy Bypass -NoProfile -File %~dpn0.ps1 %*
    powershell -ExecutionPolicy Bypass -NoProfile -File %~dp0\ps1\%~n0.ps1 %*

if %errorlevel% neq 0 (
    rem 終了コードが 0 以外の場合は一時停止する
    pause
)

以上

20
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
25