Configurazione ed Esecuzione di JsN


Esecuzione

JsN.exe <percorso_del_config.json>

Esempi:

JsN.exe config.json
JsN.exe "C:\scripts\monitor.json"
JsN.exe TCa\CaMonitor.json

Formato JSON della configurazione

{
  "scriptfile": "./my_script.js",
  "arg": {
    "key1": "value1",
    "key2": 42,
    "key3": true,
    "nested": {
      "sub": "value"
    }
  }
}
Campo Tipo Descrizione
scriptfile stringa Percorso del file JS (relativo alla cartella di configurazione o assoluto)
arg oggetto Dati arbitrari disponibili nello script come arg

Accesso a arg in uno script

Tutto il contenuto di "arg" viene passato in JS come oggetto globale arg:

Configurazione:

{
  "scriptfile": "./run.js",
  "arg": {
    "host": "smtp.office365.com",
    "port": 587,
    "recipients": ["admin@example.com", "ops@example.com"],
    "debug": false
  }
}

Script 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

Percorsi in scriptfile

Il percorso in scriptfile può essere:

Formato Esempio Comportamento
Relativo "./script.js" Relativo alla cartella di configurazione
Assoluto "C:\\scripts\\run.js" Percorso assoluto

Raccomandazione: Mantieni la configurazione e lo script nella stessa cartella e usa "./script.js".


Struttura del progetto

Organizzazione consigliata dei file:

my-project/
├── config.json        ← configurazione (passata a JsN.exe)
├── script.js          ← script principale
└── lib/
    └── helpers.js     ← funzioni di supporto (se necessarie)

Configurazioni multiple per task diversi

Puoi avere più configurazioni per uno script con parametri diversi:

monitor/
├── monitor.js                  ← script condiviso
├── monitor-production.json     ← configurazione per produzione
└── monitor-staging.json        ← configurazione per staging

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/..."
  }
}

Esecuzione pianificata (Utilità di pianificazione)

Per l'esecuzione periodica usa l'Utilità di pianificazione di Windows:

  1. Apri Utilità di pianificazione (taskschd.msc)
  2. Crea un'attività → Azioni → Nuova
  3. Programma: C:\tools\JsN\JsN.exe
  4. Argomenti: C:\scripts\monitor\config.json
  5. Configura il trigger (ogni N minuti, all'avvio, ecc.)

Oppure via 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

Esecuzione come amministratore

Le funzioni svc_* richiedono privilegi di amministratore. Modi per eseguire:

Tramite collegamento: Tasto destro → Esegui come amministratore.

Tramite Utilità di pianificazione: Durante la creazione dell'attività → Esegui con i privilegi più elevati.

Tramite PowerShell:

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

Codici di uscita di JsN.exe

Codice Significato
0 Script eseguito con successo
1 Impossibile caricare il file di configurazione o JS