Help us understand the problem. What is going on with this article?

JCLI - JobScheduler Powershell Command Line Interface

More than 3 years have passed since last update.

1.JobSchedulerについて

JobSchedulerは独SOS社(Software- und Organisations-Service GmbH)によって開発されている、ジョブ管理システムです。
JobSchedulerの主な特徴は、下記となります。

  • オープンソース(GNU Public License V.2)
    • Linux/Windows版は、無料で使用可能。(但しユニバーサル・エージェントの同時複数タスク実行は有償ライセンスが必要)
    • 有償ライセンスを購入すれば、ユニバーサル・エージェントの同時複数タスク実行に加えて、障害対応、バグフィックス/ワークアラウンドの提供、新機能の早期提供、などのサービスが提供される。
    • 有償ライセンスの機能が使用できる、30日間無償トライアルライセンスも提供されている。申し込みはこちらから
  • プログラマブル
    • ジョブの中で、Java, Perl, JavaScript, VBScript, Powershell, javax.scriptの内部APIを使ったロジックを記述可能
    • 外部APIによりRESTまたはコマンドラインからジョブの実行制御、実行状況の取得が可能
  • エンタープライズ・グレード
    • ファイル転送やログローテンション等豊富なテンプレート機能
    • リモートジョブ実行、冗長化機能、ロードバランス、外部認証等、エンタープライズ向け大規模システム対応
    • Zabbix/Nagios(ジョブ実行監視)との連携機能
    • MySQL/MariaDBの他、PostgreSQL, Oracle, DB2, MS SQL Serverに対応
  • 豊富な導入実績

詳細な情報については、以下をご覧下さい。

2.JCLIについて

JobSchedulerの操作は、WEB GUI(JOC Cockpit)、WEBサービスAPI(REST-JSON/SOAP-XML)、コマンドライン(jobscheduler.sh|cmd)などがありましたが、V.1.10からJCLI(JobScheduler Powershell CLI)が新たに加わりました。
JCLIはPowershellのコマンドレットで作成され、Powershell 2.0以降(Windows7以降)であれば動作します。(もちろんLinux/Mac環境ではまだサポートされていませんが、Powershell 6.0ではLinux/Macもサポートされる予定なので楽しみです)

JCLIの概要は以下のとおりです。

  • 既存コマンドラインの置き換え
     - .\bin\jobscheduler.sh|cmdコマンド
     - .\bin\jobeditor.cmdコマンド
     - .\bin\jobscheduler_event.cmd

  • 一括操作
     - 従来のWEB GUIやWEBサービスAPI、コマンドラインでは難しかった、JobSchedulerオブジェクト(jobs, job chains, orders, tasks, event)に対する開始・停止・作成・削除などの操作を一括で実行

  • エージェント管理

    • エージェント状態の取得
    • Windowsサービスのインストール・アンインストール

3.使用方法

ダウンロード

JCLIはGithubから入手できます。
Clone or Downloadボタンから、Download ZIPをクリックし、適当なところで解凍します。
解凍したフォルダ名を"JobScheduler"に変更し、PowershellのパスC:\Windows\system32\WindowsPowerShell\v1.0\Modules\などに配置します。

実行ポリシーの確認

"JobScheduler"フォルダに含まれるスクリプトファイルは、PowerShellの「実行ポリシー(Execution Policy)」で制御されていますので、環境に応じてブロックを解除する必要があります。
Powershellを開いて
PS C:\> Get-ExecutionPolicy
RemoteSignedではなく、Restrictedなどであれば変更します。
PS C:\> Set-ExecutionPolicy RemoteSigned
参考:WindowsでPowerShellスクリプトの実行セキュリティポリシーを変更する

モジュールインポート

Powershellを開いて
PS C:\> Import-Module JobScheduler
または
PS C:\> Import-Module C:\カスタムパス\JobScheduler
を実行すれば、準備完了です。
PowerShellユーザープロファイルにこのコマンドを設定しておけば、Powershellを開くたびにこのコマンドを実行する必要はありません。

JobSchedulerマスターを指定

操作する対象のJobSchedulerマスターを指定します。
PS C:\> Use-Master <Url>、またはPS C:\> Use-Master -Url <Url>
<URL>は、http://ホスト名またはIPアドレス:4444と指定します。
Use-Masterは、Use-JobSchedulerMasterUse-JSMasterUse-JobSchedulerWebServiceでも同じです。
JobSchedulerマスターが、Windows上でサービスとして稼働している場合はJobScheduler Idの指定が必要です。
PS C:\> Use-Master -Id <JobSchedulerID>
または
PS C:\> Use-JobSchedulerMaster -Url <Url> -Id <JobSchedulerID>
で指定します。
JobSchedulerマスターに接続すると、下記のように表示されます。

PS C:\> Use-Master http://xxx.xxx.xxx.xxx:4444

Id       :
Url      : http://xxx.xxx.xxx.xxx:4444/
ProxyUrl :
Local    : False
Install  : @{Directory=; ExecutableFile=; Params=; StartParams=; ClusterOptions=; PidFile=}
Config   : @{Directory=; FactoryIni=; SosIni=; SchedulerXml=}
Service  : @{ServiceName=; ServiceDisplayName=; ServiceDescription=}

接続内容を確認するためには、以下のコマンドを実行します。

PS C:\> Show-Status

________________________________________________________________________
Job Scheduler instance: scheduler
.............. version: 1.11.2
......... operated for: http://xxx.xxx.xxx.xxx:4444/
.......... using proxy:
........ running since: 2017-06-06T07:55:42Z
................ state: running
.................. pid: 1644
........... job chains: 34
............... orders: 22
................. jobs: 82
................ tasks: 0
....... enqueued tasks: 0
________________________________________________________________________

4.コマンド使用方法

詳細はJCLI - JobScheduler Command Line Interface(英文)を参照ください。

5.使用例

何らかの理由で実行中のタスクを一斉に停止したい場合、WEB GUIで一個づつ停止するか、APIを使用して実行中タスクを検索して停止するスクリプトを作成する必要がありました。
JCLIを使用すると、下記の一行で実現できます。
PS C:\> Get-Task | Stop-Task

satoruf
TWITTER: http://twitter.com/satoruf
http://www.ossl.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away