如何将Node+TypeScript开发的REST API与SCCM集成供ServiceNow调用?
解决方案:自建Node/TS API集成SCCM与ServiceNow实现自主软件部署
一、可行性确认
完全可以实现你需要的场景:通过自建API衔接SCCM和ServiceNow,让员工在ServiceNow自主选择免费软件并触发SCCM推送安装。
二、SCCM与自建API的集成方式
SCCM提供两种主流方式供外部系统调用,你的Node/TS API可以任选一种对接:
- CM REST API(官方推荐)
- 先在SCCM控制台启用CM REST API:进入「Administration > Site Configuration > Sites」,选中站点后在「Site Properties > Ports」里开启REST API端口(默认443)。
- 用SCCM服务账户(需具备软件包读取、应用部署、集合管理权限)在你的API中调用CM REST接口:
- 获取免费软件列表:调用
GET /AdminService/v1/SMS_Application,通过过滤条件(比如自定义属性IsFreeSoftware=true)筛选出免费授权的软件。 - 触发软件部署:调用
POST /AdminService/v1/SMS_Application({AppID})/AdminService.Deploy,传递目标设备ID/集合ID、部署设置(比如允许用户安装、无需审批)。
- 获取免费软件列表:调用
- PowerShell脚本调用
如果CM REST API无法满足特定需求,可在你的Node API中通过child_process模块执行SCCM PowerShell cmdlets:- 示例代码片段:
import { exec } from 'child_process'; // 获取免费软件列表 exec('Get-CMApplication -Fast | Where-Object {$_.CustomProperty1 -eq "Free"}', { env: { ...process.env, PSModulePath: 'SCCM模块路径' } }, (error, stdout) => { if (error) throw error; const apps = JSON.parse(stdout); // 处理软件列表 }); // 触发部署到指定设备 exec(`New-CMApplicationDeployment -ApplicationName "软件名" -CollectionName "单台设备临时集合" -AvailableDateTime (Get-Date) -UserNotification DisplayAll`, (error) => { if (error) throw error; // 部署成功逻辑 });
- 示例代码片段:
三、ServiceNow侧配置(基于Start集成中心)
- 创建自定义UI页面/表单:在ServiceNow中新建一个面向员工的自助页面,添加「免费软件」下拉列表,下拉列表的数据源配置为调用你的自建API,实时拉取免费软件列表。
- 配置REST消息集成:在Start集成中心创建新的REST集成,填写你的API地址、认证方式(比如API密钥、OAuth2),关联表单的「提交」事件。当用户选择软件提交后,ServiceNow自动向你的API发送请求,携带用户ID、设备名称/ID、选中的软件ID等信息。
- 状态同步:在ServiceNow中添加状态字段,通过定时调用你的API查询SCCM部署进度,更新给用户。
四、自建API的核心逻辑
- 请求校验:接收ServiceNow的请求后,先验证请求合法性(比如API密钥校验),并确认用户设备已在SCCM中注册。
- 软件权限校验:调用SCCM接口确认该软件为免费授权,避免非法软件部署。
- 触发SCCM部署:根据用户设备信息,将设备添加到临时部署集合(或直接指定单台设备),调用SCCM接口触发安装任务。
- 结果反馈:向ServiceNow返回部署请求的状态(成功/失败),并提供后续查询部署进度的接口。
五、关键注意事项
- 权限管控:严格限制SCCM服务账户的权限,仅授予必要的软件部署、集合管理权限;ServiceNow调用API需通过认证,禁止匿名访问。
- 错误处理:捕获SCCM接口调用失败、设备未注册、软件不存在等异常,返回结构化错误信息给ServiceNow,方便用户理解问题。
- 部署状态跟踪:定期轮询SCCM的部署状态接口,同步到ServiceNow,让员工能看到安装进度(比如「部署中」「已完成」「失败」)。
内容的提问来源于stack exchange,提问作者Felipe Alves
相关产品推荐
相关产品推荐

