JsNの構成と実行
実行方法
JsN.exe <path_to_config.json>
例:
JsN.exe config.json
JsN.exe "C:\scripts\monitor.json"
JsN.exe TCa\CaMonitor.json
JSON設定ファイル形式
{
"scriptfile": "./my_script.js",
"arg": {
"key1": "value1",
"key2": 42,
"key3": true,
"nested": {
"sub": "value"
}
}
}
| フィールド | タイプ | 説明 |
|---|---|---|
scriptfile |
string | JSファイルへのパス(設定ファイルのフォルダからの相対パス、または絶対パス) |
arg |
object | スクリプト内で arg として利用可能な任意のデータ |
スクリプト内での arg へのアクセス
"arg" の内容はすべて、グローバルオブジェクト arg としてJSに渡されます:
設定ファイル:
{
"scriptfile": "./run.js",
"arg": {
"host": "smtp.office365.com",
"port": 587,
"recipients": ["admin@example.com", "ops@example.com"],
"debug": false
}
}
スクリプト run.js:
console.log(arg.host); // "smtp.office365.com"
console.log(arg.port); // 587
console.log(arg.recipients[0]); // "admin@example.com"
console.log(arg.debug); // false
scriptfile内のパス
scriptfile 内のパスは以下の形式が可能です:
| 形式 | 例 | 動作 |
|---|---|---|
| 相対パス | "./script.js" |
設定ファイルのフォルダからの相対パス |
| 絶対パス | "C:\\scripts\\run.js" |
絶対パス |
推奨: 設定ファイルとスクリプトを同じフォルダに配置し、
"./script.js"を使用してください。
プロジェクト構造
推奨されるファイル構成:
my-project/
├── config.json ← 設定ファイル(JsN.exeに渡す)
├── script.js ← メインスクリプト
└── lib/
└── helpers.js ← ヘルパー関数(必要な場合)
異なるタスク用の複数の設定ファイル
一つのスクリプトに対して、異なるパラメータを持つ複数の設定ファイルを持つことができます:
monitor/
├── monitor.js ← 共有スクリプト
├── monitor-production.json ← 本番環境用設定
└── monitor-staging.json ← ステージング環境用設定
monitor-production.json:
{
"scriptfile": "./monitor.js",
"arg": {
"service": "MyApp_Production",
"process": "myapp.exe",
"notify_url": "https://hooks.slack.com/services/PROD/..."
}
}
monitor-staging.json:
{
"scriptfile": "./monitor.js",
"arg": {
"service": "MyApp_Staging",
"process": "myapp.exe",
"notify_url": "https://hooks.slack.com/services/STAG/..."
}
}
スケジュール実行(タスクスケジューラ)
定期的な実行にはWindowsタスクスケジューラを使用します:
- タスクスケジューラを開く(
taskschd.msc) - タスクの作成 → 操作 → 新規
- プログラム/スクリプト:
C:\tools\JsN\JsN.exe - 引数の追加:
C:\scripts\monitor\config.json - トリガーの構成(N分ごと、起動時など)
またはPowerShellを使用:
$action = New-ScheduledTaskAction `
-Execute "C:\tools\JsN\JsN.exe" `
-Argument "C:\scripts\monitor\config.json"
$trigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Minutes 5) -Once -At (Get-Date)
Register-ScheduledTask -TaskName "JsN-Monitor" -Action $action -Trigger $trigger -RunLevel Highest
管理者として実行
svc_* 関数は管理者権限を必要とします。実行方法:
ショートカット経由: 右クリック → 管理者として実行。
タスクスケジューラ経由: タスク作成時 → 最上位の特権で実行する。
PowerShell経由:
Start-Process "JsN.exe" -ArgumentList "config.json" -Verb RunAs
JsN.exeの終了コード
| コード | 意味 |
|---|---|
0 |
スクリプトが正常に実行された |
1 |
設定ファイルまたはJSファイルの読み込みに失敗 |