2017の23日目です。明日が私の誕生日です。(?)前置きたまたまググッて出てきた幾つかの技術を組み合わせたら大変便利過ぎて危険だったみんな知ってたのこれ?ていうお話。PowerShellはWindowsに標準で搭載されるようになり、いわゆる「OS入ってればすぐ動く」の好例となったわけなんですが、ps1ファイルがアレゲ。少なくともPC初心者の方にはダブルクリックで確実に実行出来ないとダメだと思うんです。7日目の大鷲さんがゾーン/セキュリティ(或いは場合によりExecutionPolicyなど......)に振り回されておられるわけです。良い事だけど、思ったより使い勝手悪いかなと。WSHくらいお手軽でありたい。本題そして、以下の超危険な一行に出会ってしまったのです。%*&goto:eofこれはbatファイルの1行目に書くおまじないです。このおまじないがあれば、2行目以降にPowerShell記述が出来てしまいます。二行目以降をPowerShellスクリプトとして実行させているbat......てイメージ。batからps1を呼び出す手法は結構あちこちで見かけるのですが、たった1行のおまじないでbat拡張子のPowerShellスクリプトが爆誕。ExecutionPolicyも自由に書けます。%*&goto:eofこうするとDOS窓(conhostってやつ、黒い窓)も消える。-ReferencedAssemblies」なんてやってあげると、C#のソース埋め込んで実行とか出来るんですよ。CSharp[cstest]::main('hello!')うおおおおおこのbat動くぞぉぉぉぉぉこれ動くぞぉぉぉぉとにかく表題通り「batの中で動いているPowerShellの中でC#がコンパイルされながら実行されている」のです!何を言っているか分からない!!副次的なメリットも多方に及びます。Frameworkのバージョンは恐らく実行しているOS上でのPowerShellのバージョンに依存するはず。......んーがそもそも「実行時に自動的に判定される」という点だけで超便利。なんだと」てならないかな。気になる点これ将来的に塞がれたりしないのセキュリティリスクにならんのセキュリティリスクになってhtaみたいに迫害ryC#やりたい時はアセンブリ書くのちょこっと面倒かな、とは思ってますが、PowerShell的にはやりたい放題です。最後の良心で「自身を管理者実行し直すbat」を混ぜ込んでいないのですが......やっぱりすげーセキュリティリスクになりそう。あと細かい事だけど各種エディタでデフォルトでbatとして認識されるので実に自動補完されないとかハイライトされないとかはある。XAML埋め込みを含んだ時計アプリ(のbat)をサンプルとして置いときますんで御賞味下さい。今後の発展DLLImportをより手軽に扱える関数を作ってみたりしています。妄想だけどReferencedAssembliesも何とかC#ソースから動的に生成出来ないかな。画像ファイルのEXIFとファイルのタイムスタンプを相互に変換するようなのも作ったりしてますが概ね良好です。結局「PowerShell結構スゴイんです」が故のメリットばかりなんですけどね。何か面白いアイデアとかあったら是非教えて下さい。最後になりましたがあ、ほんとはミュージシャンらしいです。サンレコにも載ったから多分。新譜出たばかりなのでヨロシクドーゾ。