ショートカットのリンク先を工夫すればOK。
単純に.ps1へのショートカットを作ってもダメ。.ps1を開く既定のハンドラが登録されていないので。
次のような記事もあるくらいだし、漠然とbatファイル経由でないとダメだと思っていた。
- PowerShellスクリプトファイル(.ps1)にファイルをドラッグ&ドロップして処理する - Qiita
- Windows PowerShellスクリプトにDrag&Dropはできない - Lazy Diary @ はてな
でも次のような記事を見つけて試してみたらうまくいった。
- windows 7 - Running powershell scripts by drag-n-drop file or folder on it - Super User
- Powershellを楽に実行してもらうには - Qiita
つまり、適当なショートカットを作成して、リンク先を powershell -NoProfile -File ファイル名(.ps1)
とすればOK。
色々オプションもあるみたいなので注意。
$Args
にちゃんとドロップしたファイルのパスが格納される。空白文字が入っているパスでも大丈夫。UNCでも大丈夫。
考えてみれば当たり前の話なのかもしれないけど、この方法でちゃんとドロップしたファイル名だけが $Args
に入るというのはちょっと不思議なような気もする。 -File ファイル名.ps1
の後に適当な文字列を入れて試すとその文字列は $Args[0]
に入るのでそういう仕様みたい。