はじめに
以前にお仕事でSKYSEAから全配布端末にある、とあるデータを配布元端末に送るツールを作りました。
その際に、バッチだけだと限界があったのでPowerShellで書きました。
(あの頃やりたかった処理は、遅延環境変数とか使っても無理でしたね・・・)
しかし、SKYSEAで配布後に実行するコマンドにPowerShellを実行できるものが見つからず焦ったことが思い出にあります。
先にPowerShellを書く前に調べろよ・・という話ですが・・・、いやー焦った焦った(笑)
今回紹介するのは、PowerShellで実行するのに必要なファイルと、バッチファイルでPowerShellでキックするソースになります。
必要なファイル
まず、PowerShellの処理に必要なファイルを挙げておきます。
SKYSEAで配信するときに、以下のファイルを全て一緒に配布する必要があります。
- バッチファイル(.bat)・・・PowerShellをキックするため。
- PowerShell(.ps1)・・・行いたい処理をするため。
バッチファイルのソース
以下、PowerShellをキックするためのバッチのソースになります。
@echo off
REM --- code in utf-8 ---
echo "ExecPS.bat"
set execDir=..\Media\
set execPS=haifu.ps1
powershell -NoProfile -ExecutionPolicy Unrestricted %execDir%%execPS%
exit
SKYSEAの配布先のディレクトリなどを変数に入れる
以下の記述で、PowerShellのファイルがあるディレクトリを指定します。
set execDir=..\Media\
そして、以下の記述で、実行したいPowerShellファイルを指定します。
set execPS=haifu.ps1
PowerShellを実行する
以下の記述で、PowerShellのファイル を実行します。
powershell -NoProfile -ExecutionPolicy Unrestricted %execDir%%execPS%
以下が「powershell」コマンドを実行するときに今回指定したオプションです。
-NoProfile
ちょっと調べたら、Windows PowerShell プロファイルを読み込まないようにするらしいです。
「PowerShell プロファイルとは何ぞや?」と思って調べたら、「PowerShell の開始時に実行されるスクリプト」のことだそうです。
なるほど、そのスクリプトの中に、自分が使うエイリアスが混じってたら、なんか面倒くさいことになるっぽいですね・・・(以下が、参考サイトです。)
-ExecutionPolicy
自分が作ったファイルを実行したので、「Unrestricted」くらいにしています。
ちなみに、データの格納先の指定の仕方は・・・
吸い上げたデータを配布元のPCなどに格納する場合は、SKYSEAでは厳しそうでした。
なので、PowerShell内で、配布元のPCのIPアドレスを指定して、そこにデータを送る処理を入れていました。(\\IPアドレス\c$
的な。)
おわり
WindowsのPCであれば、ほぼ間違いなくPowerShellファイルを実行できる環境はあると思います。
なので、僕と同じように沢山の端末に対して、何かしらのデータを取得したい場合は、本記事をご参考下さい。
以上になります!
コメント