状況
社内LANの共有フォルダにps1ファイルを配置する。
利用者には常にこの最新のスクリプトを利用させたい。
しかしファイルの署名はできない。
前提条件
- ps1ファイルはバッチから実行する。
- 実行権限は
RemoteSigned
-
makecert.exe
は使えない。=署名はできない。
とりあえず解
runPS.bat
@echo off
copy /Y "\\192.168.0.100\scripts\myscript.ps1" "tmpscript.ps1"
powershell -ExecutionPolicy RemoteSigned -File ".\tmpscript.ps1"
del /q "tmpscript.ps1"
解説
コピーしてきて実行して削除する。
以上。
いろいろ悩みましたがこれが一番シンプルで確実でした。
保存先をテンポラリフォルダにするなど工夫の余地はありますが、業務で使用するのはこのレベルで充分です。
ちなみに、-ExecutionPolicy
を Unrestricted
にしても一応実行できますが、確認ダイアログが表示されるのはピンからキリまでのユーザーに配布する上でナンセンスであるとして行っていません。
参考記事
powershellを楽に実行してもらうための非常に参考になる記事
Powershellを楽に実行してもらうには
https://qiita.com/tomoko523/items/df8e384d32a377381ef9
本来こうあるべきという物の例
PowerShell のスクリプトに署名を付与する方法
http://fnya.cocolog-nifty.com/blog/2017/01/powershell-6c78.html