run_script()

Führt ein Skript auf dem Server über krn.RunScript aus. Unterstützt sowohl VBScript als auch JavaScript.

Der Skripttext wird in folgender Reihenfolge aufgelöst: script-Parameter, script_file, Dateiliste. Wenn das Skript leer ist und nur Parameter übergeben werden, werden nur serverseitige Before/After-Events ausgelöst.

1. Signatur

  • Sync

  • Async

ecm.system.run_script(
    script: str = "",
    *,
    script_file: str | None = None,
    javascript: bool = False,
    evaluate: bool = False,
    context_name: str = "",
    main_function: str | None = None,
    inspector_enabled: int | None = None,
    script_name: str | None = None,
    files: list[JobRequestFile] | None = None,
    **params: JobValueTypes,
) -> JobResult
await ecm.system.run_script(
    script: str = "",
    *,
    script_file: str | None = None,
    javascript: bool = False,
    evaluate: bool = False,
    context_name: str = "",
    main_function: str | None = None,
    inspector_enabled: int | None = None,
    script_name: str | None = None,
    files: list[JobRequestFile] | None = None,
    **params: JobValueTypes,
) -> JobResult

2. Parameter

Parameter Typ Standard Beschreibung

script

str

""

Der auszuführende Skripttext. Im evaluate-Modus ein Ausdruck (z.B. "40 + 2"), im Exec-Modus eine Funktion (standardmäßig Main). Kann leer sein wenn script_file verwendet wird.

script_file

str | None

None

Name einer Skriptdatei im scripts-Konfigurationsverzeichnis des Servers. Wird verwendet wenn script leer ist.

javascript

bool

False

Wenn True, wird das Skript als JavaScript statt VBScript ausgeführt.

evaluate

bool

False

Wenn True, wird das Skript als Ausdruck ausgewertet und sein Wert zurückgegeben. Wenn False, wird das Skript ausgeführt und der Rückgabewert der Main-Funktion zurückgegeben.

context_name

str

""

Name des Skriptkontexts. Ein leerer String verwendet den Standardkontext des Servers.

main_function

str | None

None

Name der Einstiegsfunktion. Standardmäßig "Main" auf dem Server wenn nicht angegeben.

inspector_enabled

int | None

None

V8-Inspector-Steuerung für JavaScript-Debugging. 0 = deaktiviert, 1 = aktiviert, -1 = durch oxv8.metadata.cfg bestimmt.

script_name

str | None

None

Name des Skripts für Debugging-Zwecke.

files

list[JobRequestFile] | None

None

Optionale Liste von Eingabedateien, die an das Skript gesendet werden.

**params

JobValueTypes

 — 

Zusätzliche Schlüsselwortargumente werden als Eingabeparameter an den Job gesendet und sind innerhalb des Skripts zugänglich.

3. Rückgabewert

Ein JobResult-Objekt. Der Skript-Rückgabewert ist über result.get("$ScriptResult$", …​) zugänglich. Zusätzliche Ausgabeparameter über result.get(name, …​) und zurückgegebene Dateien über result.files.

4. Beispiele

4.1. Ausdruck auswerten (Eval-Modus)

  • Sync

  • Async

result = ecm.system.run_script("40 + 2", evaluate=True)
print(result.get("$ScriptResult$", str))  # "42"
result = await ecm.system.run_script("40 + 2", evaluate=True)
print(result.get("$ScriptResult$", str))  # "42"

4.2. JavaScript ausführen (Exec-Modus)

  • Sync

  • Async

script = """
function Main() {
    return "Hello from JavaScript";
}
"""
result = ecm.system.run_script(script, javascript=True)
print(result.get("$ScriptResult$", str))  # "Hello from JavaScript"
script = """
function Main() {
    return "Hello from JavaScript";
}
"""
result = await ecm.system.run_script(script, javascript=True)
print(result.get("$ScriptResult$", str))  # "Hello from JavaScript"

4.3. Parameter an das Skript übergeben

  • Sync

  • Async

script = """
function Main() {
    return "Hallo " + GetEntry("UserName");
}
"""
result = ecm.system.run_script(script, javascript=True, UserName="Max")
print(result.get("$ScriptResult$", str))  # "Hallo Max"
script = """
function Main() {
    return "Hallo " + GetEntry("UserName");
}
"""
result = await ecm.system.run_script(script, javascript=True, UserName="Max")
print(result.get("$ScriptResult$", str))  # "Hallo Max"

5. Siehe auch

  • empty_job() — Generischer No-Op-Job für serverseitige Events