JCLI - JobScheduler Powershell Command Line Interface


##1.JobSchedulerについて

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

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

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

 - 日本語紹介資料 https://www.ossl.co.jp/?page_id=148
 - 日本JobSchedulerユーザーグループ https://sites.google.com/site/jobschedulerja/ 
  - https://groups.google.com/forum/?hl=ja#!forum/jobscheduler-ja
  - https://www.facebook.com/Jobscheduler-Japan-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97-594469610565511/timeline/
 - ナレッジベース（英語）　https://kb.sos-berlin.com/display/PKB/Product+Knowledge+Base+Home
 -  JIRA（英語）
　https://change.sos-berlin.com/secure/Dashboard.jspa
 - User Forum（英語）　http://sourceforge.net/projects/jobscheduler/forums/forum/486122
 - SOS社ホームページ　http://www.sos-berlin.com

##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 7.0以降サポートされています。

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](https://github.com/sos-berlin/scheduler-cli-powershell)から入手できます。
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スクリプトの実行セキュリティポリシーを変更する](http://www.atmarkit.co.jp/ait/articles/0805/16/news139.html)

### モジュールインポート
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-JobSchedulerMaster`、`Use-JSMaster`、`Use-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](https://kb.sos-berlin.com/display/PKB/JCLI+-+JobScheduler+Command+Line+Interface)（英文）を参照ください。

##5.使用例

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