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タスクスケジューラを使用します:

  1. タスクスケジューラを開く(taskschd.msc
  2. タスクの作成 → 操作 → 新規
  3. プログラム/スクリプト: C:\tools\JsN\JsN.exe
  4. 引数の追加: C:\scripts\monitor\config.json
  5. トリガーの構成(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ファイルの読み込みに失敗