> For the complete documentation index, see [llms.txt](https://docs.keeper.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.keeper.io/keeperpam/jp/endpoint-privilege-manager/reference/jobs-definition-and-format.md).

# ジョブ: 定義と形式

<figure><img src="/files/4ageavXQSUR3xA0kRnRP" alt=""><figcaption></figcaption></figure>

**対象:** エージェント上でジョブを作成、編集、トラブルシューティングするIT管理者向けです。

**ジョブ**は、トリガーが発動したときに実行される**タスク**の集合です。ジョブはポリシー制御、インベントリ、リスク評価、構成の処理、登録、通知、メンテナンスなどに使われます。各ジョブは1つのJSONファイルです。

## ジョブファイルの場所と命名

* **ディレクトリ:** アプリケーションルート直下の `Jobs/` (例: `C:\Program Files\KeeperPrivilegeManager\Jobs` または `{approot}/Jobs`)
* **ファイル名:** `{job-id}.json`。JSON内の `id` フィールドはファイル名 (`.json` を除く) と一致させる必要があります
* **例:** `Jobs/my-job.json` には `"id": "my-job"` を含める必要があります

## ジョブJSONの構造

```json
{
  "id": "unique-job-id",
  "name": "Human-readable name",
  "description": "What the job does",
  "enabled": true,
  "priority": 5,
  "schedule": { ... },
  "events": [ ... ],
  "parameters": [ ... ],
  "tasks": [ ... ],
  "condition": { ... },
  "alternateJobId": null,
  "osFilter": { ... }
}
```

<table data-header-hidden="false" data-header-sticky><thead><tr><th width="155.6666259765625">プロパティ</th><th width="113.3702392578125">型</th><th>説明</th></tr></thead><tbody><tr><td><code>id</code></td><td>string</td><td>一意のジョブID。ファイル名と一致させる必要があります</td></tr><tr><td><code>name</code></td><td>string</td><td>ログや管理画面に表示する名前</td></tr><tr><td><code>description</code></td><td>string</td><td>任意の説明</td></tr><tr><td><code>enabled</code></td><td>boolean</td><td><code>false</code> のとき、トリガーに関係なく実行対象外</td></tr><tr><td><code>priority</code></td><td>number</td><td>1〜10。複数のジョブが同時に対象になる場合、数値が大きいほど優先</td></tr><tr><td><code>schedule</code></td><td>object</td><td>タイマーベースのトリガー (間隔、cron、1回限り、カレンダー)。イベントのみのジョブでは省略</td></tr><tr><td><code>events</code></td><td>array</td><td>このジョブを起動するイベント名 (例: <code>PolicyEvaluationPending</code>、<code>Startup</code>)</td></tr><tr><td><code>parameters</code></td><td>array</td><td>名前、型、既定値、必須フラグを持つ入力パラメータ。タスク引数の置換に利用</td></tr><tr><td><code>tasks</code></td><td>array</td><td>実行するタスクの順序付きリスト</td></tr><tr><td><code>condition</code></td><td>object</td><td>任意。未充足時はジョブをスキップするか <code>alternateJobId</code> を実行</td></tr><tr><td><code>alternateJobId</code></td><td>string</td><td>任意。<code>condition</code> 未充足時に実行するジョブ</td></tr><tr><td><code>osFilter</code></td><td>object</td><td>任意。特定プラットフォーム (<code>windows</code>、<code>linux</code>、<code>macOS</code>) に限定</td></tr></tbody></table>

### トリガー

ジョブは、宣言したトリガーのいずれかが発動したときに実行されます。スケジュールとイベントのトリガーを組み合わせることもでき、いずれも単独でジョブの実行につながります。

### イベント

`events` 配列にはイベント名が指定されます。エージェントが MQTT、内部のポリシー操作、またはカスタムイベントから一致するイベントを発行すると、ジョブがキューに入ります。一般的なイベント種別には `Startup`、`PolicyEvaluationPending`、カスタムMQTTイベント名などがあります。

### スケジュール

1つのジョブで使用できるスケジュールモードは1種類のみです。

* **Interval:** スケジューラ起動時からN分ごとに実行。

  ```json
  "schedule": { "intervalMinutes": 30 }
  ```
* **Cron:** 標準的な5フィールドのcron式 (分、時、日、月、曜日)。

  ```json
  "schedule": { "cronExpression": "0 16 * * 2" }
  ```
* **One-time:** 指定のUTC日時に1回だけ実行。

  ```json
  "schedule": { "runAt": "2025-01-15T10:00:00Z" }
  ```
* **Calendar:** 特定の曜日の特定時刻に実行。

  ```json
  "schedule": { "calendar": [ { "daysOfWeek": [1], "time": "09:00" } ] }
  ```

## タスク

`tasks` 配列はジョブの処理内容を定義します。タスクは順番に実行されます。タスクが失敗し、`continueOnFailure` が未設定の場合、ジョブは停止します。あるタスクの出力は、パラメータや出力参照を通じて後続のタスクへ渡せます。

各タスクは通常以下を含みます。

* **`id`:** ジョブ内で一意。
* **`command`** または **`executablePath`:** 実行するもの。
* **`arguments`:** コマンドライン引数。ジョブパラメータや `{KeeperApiBaseUrl}` などの組み込みトークンによる置換が可能。
* **`ExecutionType`:** タスクの実行コンテキスト。
* **`timeoutSeconds`:** 任意。エージェントがタスクを強制終了するまでの最大実行時間 (秒)。
* **`continueOnFailure`:** `true` のとき、このタスクが0以外の終了コードでもジョブは続行します。

### 実行タイプ

<table data-header-hidden="false" data-header-sticky><thead><tr><th width="166">ExecutionType</th><th>実行方法</th></tr></thead><tbody><tr><td><code>Service</code></td><td>エージェントサービスコンテキストで実行 (ユーザーデスクトップなし)。バックグラウンドおよびセキュリティ関連タスクの既定</td></tr><tr><td><code>User</code></td><td>現在のユーザーセッションで実行</td></tr><tr><td><code>UserElevated</code></td><td>ユーザーセッションで昇格して実行</td></tr><tr><td><code>UserDesktop</code></td><td>対話的なユーザーデスクトップセッションで実行</td></tr><tr><td><code>Http</code></td><td>プロセスを起動せず、エンドポイントへ HTTP または HTTPS リクエストを送信</td></tr></tbody></table>

`scriptType` を設定する場合、PowerShell、Bash、Python、Batch などのスクリプトも実行できます。利用できる値の正確な一覧は、お使いのエージェントのスキーマをご参照ください。

### 条件とプラットフォームの絞り込み

**`condition`:** タスクを実行する前に評価されるジョブレベルの条件です。条件を満たさない場合、ジョブはスキップされるか、`alternateJobId` で指定されたジョブが実行されます。

**`osFilter`:** ジョブの実行対象OSを限定します。`osFilter` が現在のプラットフォームを除外している場合、そのエージェントではジョブは実行されず、検証時の実行ファイル存在チェックもスキップされます。

```json
"osFilter": {
  "windows": true,
  "linux": false,
  "macOS": false
}
```

### 検証と読み込み

* **検証:** ジョブ JSON をリクエスト本文として `POST /api/Jobs/validate` に送ると、保存前に構造を検証できます。検証では、`osFilter` と一致するプラットフォームについて、参照されている実行ファイルが検証ホスト上に存在することを確認します。
* **読み込み:** エージェントは起動時に `Jobs/` ディレクトリからジョブを読み込み、ファイル変更時に再スキャンします。不正な JSON のジョブはスキップされ、エラーがログに記録されます。
* **登録とデプロイ:** ジョブの検出と登録については[ジョブとプラグイン: 登録](/keeperpam/jp/endpoint-privilege-manager/reference/plugin-and-job-registration.md)をご参照ください。カスタムジョブタスクのバイナリを端到端でデプロイする手順については[カスタムジョブガイド](/keeperpam/jp/endpoint-privilege-manager/custom-tooling/custom-job-guide.md)をご参照ください。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.keeper.io/keeperpam/jp/endpoint-privilege-manager/reference/jobs-definition-and-format.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
