You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ServiceNow Jakarta实例中脚本触发PowerShellProbe报错求助

如何在Jakarta实例的业务规则/脚本中触发带参数的PowerShellProbe

首先,结合你描述的场景(GUI运行成功但脚本实例化抛异常),我先梳理正确的调用流程,再排查常见的错误坑点:

1. 正确实例化并触发PowerShellProbe的步骤

在ServiceNow Jakarta版本中,脚本调用已配置好的PowerShellProbe不能直接凭空创建实例,必须绑定你在GUI里定义好的探针记录,具体步骤如下:

步骤1:获取已配置的探针记录

先通过probe表查询到你预先定义好的、带powershell_param_someparam参数的探针:

// 替换成你实际的探针名称
var probeGR = new GlideRecord('probe');
probeGR.addQuery('name', '你的PowerShell探针名称');
probeGR.query();

if (!probeGR.next()) {
    gs.error("未找到指定的PowerShell探针,请检查名称是否正确");
    return;
}

步骤2:实例化PowerShellProbe并传入参数

用查到的探针sys_id初始化PowerShellProbe对象,然后设置参数(注意参数必须是JSON格式字符串):

// 用已存在的探针sys_id实例化对象
var psProbe = new PowerShellProbe(probeGR.getUniqueValue());

// 构建参数对象,键名要和探针里定义的参数名完全一致
var paramObj = {
    "powershell_param_someparam": "你要传递的具体参数值"
};
// 将参数转为JSON字符串后设置到探针
psProbe.setParameter(JSON.stringify(paramObj));

步骤3:执行探针并处理结果

最后调用probe()方法执行,同时可以获取执行状态和结果:

var executionResult = psProbe.probe();

if (executionResult) {
    gs.info("探针执行成功,返回结果:" + executionResult.getResult());
} else {
    gs.error("探针执行失败,错误信息:" + psProbe.getErrorMessage());
}

2. 你可能踩中的错误坑点

你提到实例化时抛异常,大概率是以下几种情况:

  • 直接创建空探针实例:如果用new PowerShellProbe()不带sys_id,会生成一个未配置脚本和参数的空探针,必然报错,必须传入已存在的探针sys_id。
  • 参数格式错误:参数必须是JSON字符串,不能直接传JS对象;而且键名要和探针GUI里定义的参数名完全匹配(大小写敏感)。
  • 权限不足:执行脚本的用户(比如业务规则的运行用户)没有probe表的读取权限,或者缺少probe_admin这类能执行探针的角色,需要检查权限配置。
  • 探针脚本参数引用错误:如果PowerShell脚本里没有用$powershell_param_someparam正确引用参数,即使传了值也会导致执行失败。

如果还是解决不了,建议把抛出的异常信息和你的原代码贴出来,能更精准定位问题~

内容的提问来源于stack exchange,提问作者mh133

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:34:13