配置与运行 JsN


运行

JsN.exe <配置文件路径.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 字符串 JS 文件路径(相对于配置文件夹或绝对路径)
arg 对象 在脚本中可通过全局对象 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

以管理员身份运行

srv_* 函数需要管理员权限。运行方式:

通过快捷方式: 右键单击 → 以管理员身份运行。

通过任务计划程序: 创建任务时 → 勾选“使用最高权限运行”。

通过 PowerShell:

Start-Process "JsN.exe" -ArgumentList "config.json" -Verb RunAs

JsN.exe 退出代码

代码 含义
0 脚本执行成功
1 加载配置文件或 JS 文件失败