powershellメモ
PowerShell関係のメモ
最近ちょっとPowerShellが楽しくて仕方ない。
ので、いつもの備忘録メモ。
自前のdllを使う
少し凝った事をやりたい場合にC#でdll作ったり、 或いは自作したC#のプログラムをPowerShellで定期処理組みたくなったりする。
そんな場合に PowerShell -> dll(C#) をやりたくなる。
http://blog.powershell-from.jp/?p=248
https://www.itlab51.com/?p=5998
Add-Type -path方式と、Reflection.Assembly::LoadAssembly方式とあるけど、どっちがいいのかな?
と思ったらドンピシャな情報があったのでこちら。
http://tech.guitarrapc.com/entry/2014/03/17/042253
やりたい場合の多くは「自作のdll呼び出し」だから、その範囲内に限って言えばまぁどっちでも良い。
そうじゃなく複数バージョンインストールしてるサードパーティ的な奴を使いたくなったらこの話を思い出す、でとりあえずOKくさい。
おまじない
同一フォルダに
- hogehoge.bat
- hogehoge.ps1
こいつらが並んでるとして。
@echo off setlocal cd %~dp0 powershell -ExecutionPolicy RemoteSigned -File ./hogehoge.ps1
point:
- powershellコマンドの
-Fileでps1を指定して実行する。
.ps1 自体はダブルクリックしても起動できない(実行可能ではない)ので、
powershellコマンド の -Fileオプション として実行する。
.jar 自体は(普通だと)そのまま実行できないので java -jar で実行するのと似たようなもの。
(マニフェストを仕込んでおけばjarダブルクリックで実行できるんだって!!)
ちなみに jar に関しては launch4j 使って exe 化するのがオススメ。
ということで .ps1 とセットでキックするためだけの .bat を用意して使う。
- 実行前に
cd %~dp0を打っておく。
.ps1 はカレントフォルダが解らない子なのだそうで、これが原因でハマってた人がいた。(うっかりURLを控え忘れた)
なので、キックする .bat の方で cd 掛けておく事にした。
割とここまで定型パターンらしい。