从ServiceNow中检索UserName

时间:2017-12-14 18:10:50

标签: powershell servicenow

我可以使用Invoke-RestMethod检索特定事件ID的记录。但是,在检索数据时,Resolved ToUpdated By等值会被sysid填充。

Resolved By采用以下格式:

https<!>://devinstance.servicenow.com/api/sysid, value= sysid

我想查看用户名而不是sysid。

1 个答案:

答案 0 :(得分:3)

“用户ID”(user_name)不在事件上,它位于sys_user表中,因此您必须点走

如果您使用的是表格API ,则需要使用 sysparm_fields 指定要返回的点走的字段查询参数。

这没问题,只需像这样指定你的终端:

$uri = "https://YOUR_INSTANCE.service-now.com/api/now/table/incident?sysparm_query=number%3DINC0000001&sysparm_fields=resolved_by.user_name"

我已经指定了针对特定事件编号的查询,但您可以将其替换为您的查询。重要部分是 sysparm_fields = resolved_by.user_name 。您还需要在此处指定所需的任何其他字段。

运行此API调用后得到的JSON如下:

{
  "result": [
    {
      "resolved_by.user_name": "admin"
    }
  ]
}

请注意元素名称:“resolved_by.user_name”。

执行此操作的另一个选项是告诉API返回显示和实际值,方法是指定sysparm_display_value参数并将其设置为 all 以返回 sys_id和显示值,或仅 true 仅返回显示值。

您的URI将如下所示:

https://dev12567.service-now.com/api/now/table/incident?sysparm_query=resolved_byISNOTEMPTY%5Enumber%3DINC0000001&sysparm_display_value=all

您的JSON将包含以下内容:

"number": {
   "display_value": "INC0000001",
   "value": "INC0000001"
 },
 "resolved_by": {
   "display_value": "System Administrator",
   "link": "https://YOUR_INSTANCE.service-now.com/api/now/table/sys_user/6816f79cc0a8016401c5a33be04be441",
   "value": "6816f79cc0a8016401c5a33be04be441"
 },
 "sys_updated_by": {
   "display_value": "admin",
   "value": "admin"
 },

可以通过以下方式访问:

answer.result[n].resolved_by.display_value