【SKYSEA、PowerShell】ソフトウェア配布先でバッチ以外の処理を実行させる

Code

はじめに

以前にお仕事で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 の開始時に実行されるスクリプト」のことだそうです。

なるほど、そのスクリプトの中に、自分が使うエイリアスが混じってたら、なんか面倒くさいことになるっぽいですね・・・(以下が、参考サイトです。)

about_Profiles - PowerShell
PowerShell プロファイルを作成して使用する方法について説明します。

-ExecutionPolicy

自分が作ったファイルを実行したので、「Unrestricted」くらいにしています。

ちなみに、データの格納先の指定の仕方は・・・

吸い上げたデータを配布元のPCなどに格納する場合は、SKYSEAでは厳しそうでした。

なので、PowerShell内で、配布元のPCのIPアドレスを指定して、そこにデータを送る処理を入れていました。(\\IPアドレス\c$的な。)

おわり

WindowsのPCであれば、ほぼ間違いなくPowerShellファイルを実行できる環境はあると思います。

なので、僕と同じように沢山の端末に対して、何かしらのデータを取得したい場合は、本記事をご参考下さい。

以上になります!

コメント

タイトルとURLをコピーしました