ようこそここは俺のチラシの裏だ。

専門学校卒のぽんこつえんじにあが個人事業主になって書いているただの日記。

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 掛けておく事にした。

割とここまで定型パターンらしい。

演算子チートシート

http://blog.shibata.tech/entry/2015/12/03/000000