我正在尝试使用Powershell SOAP在ServiceNow中创建一个票证.我使用基本身份验证使用SoapUI工具成功测试了有效的XML.但是当我尝试通过Powershell将相同的XML发布到ServiceNow时,我得到一个错误.我不确定它是否与auth标头有问题(在SoapUI和PS中都有相同的信誉)或其他因为我从帖子中得到500错误,这听起来与auth无关.
使用PS v4.很长一段时间PowerShell用户.第一次使用ServiceNow进行SOAP和脚本交互.他们的wiki没有强大的例子:(
谢谢
$uri = "https://fubar.service-now.com/u_smarts_notification.do?SOAP"
$username = 'looseLips'
$password = 'sinkShips'
$xml = [xml]@"
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://www.service-now.com/u_smarts_notification">
<soapenv:Header/>
<soapenv:Body>
<u:insert>
<u_assignment_group>Some Group</u_assignment_group>
<u_impact>4</u_impact>
<u_urgency>3</u_urgency>
<u_op_tier_1>Malfunction</u_op_tier_1>
<u_op_tier_2>Error</u_op_tier_2>
<u_op_tier_3>Break Fix</u_op_tier_3>
<u_short_description>Subject</u_short_description>
<u_work_notes>Body</u_work_notes>
</u:insert>
</soapenv:Body>
</soapenv:Envelope>
"@
$header = @{"Authorization" = "Basic "+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($username+":"+$password))}
$post = Invoke-WebRequest -Uri $uri -Headers $header -Method Post -Body $xml
Invoke-WebRequest : The remote server returned an error: (500) Internal Server
Error.
At R:\ps1\serviceNowINC.ps1:30 char:9
+ $post = Invoke-WebRequest -Uri $uri -Headers $header -Method Post -Body …Run Code Online (Sandbox Code Playgroud) 我ServiceNow REST API从.net WinForms/C#应用程序访问创建和更新事件,任务等记录.
我需要将文件附件上传到记录的功能,但我没有在ServiceNow Wiki上的REST API文档中的任何位置看到此功能.仅提供SOAP基于方法作为上载文件附件的解决方案.可以通过REST API完成吗?
有没有办法对ServiceNow REST API执行REST调用,返回表的一列?我想查询服务器表中只有服务器的名称,而不是包含返回的50多个字段的整个记录.
我正在使用 xml Web 服务进行 service-now 来查询事件记录。我正在使用 java 和 apache Httpscomponents 进行调用。由于我有大量记录,因此想要根据 sys_updated_on 过滤这些记录。我尝试的是将以下 uri 传递给 HTTPGet
https://<instance>-now.com/incident.do?CSV&sys_param_query=active=true^sys_updated_onBETWEENjavascript:gs.dateGenerate(2016-12-01,03:50:00)@javascript:gs.dateGenerate(2016-12-01,03:55:00)
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用,因为它返回所有记录,而不是过滤后的记录。有人可以告诉我我在这里做错了什么并进行更正吗?谢谢
我们的团队希望根据用户输入的街道、城市、州和邮政编码生成串联地址。问题是很多时候用户可能无法填写所有这四个输入。有没有一种方法可以有效地生成串联地址字段的所有组合,而无需编写 12 个 if 语句?
例如,如果用户填写了所有 4 个字段,我们要返回以下内容:
return current.agency_street + ', ' + current.agency_city + ', ' + current.agency_state + ', ' + current.agency_zip;
Run Code Online (Sandbox Code Playgroud)
如果他们填写了除邮政编码之外的所有内容,我们要返回:
return current.agency_street + ', ' + current.agency_city + ', ' + current.agency_state;
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有所有 if 语句的情况下做到这一点?谢谢!
我打算让用户在ServiceNow SOAP请求中指定编码查询.
问题是如果用户指定了无效的查询字符串(例如"?#@"或"sometext"),ServiceNow不会返回任何异常,而是返回每行或根本没有行.
有没有办法通过webservice检查编码查询的有效性?
我正在处理要求我将字符串作为参数传递的 PowerShell 脚本。该字符串是以逗号分隔的用户名列表。当我有 100 多个用户名时出现错误。但如果字符串少于 100 个用户,我不会出错。见下文。我试图使用数组传递这个值,但没有运气。这个参数的字符限制是什么,我该如何解决这个问题。我在 ServiceNow Run PowerShell 脚本中使用它。该参数值由 ServiceNow 使用逗号分隔值传递。
Param(
[string]$itil_users_a = "A.Syafiq,Aaron.Brown,Aaron.Reynnie,Abd.Jalil,Abdu.Hijazi,Abdul.Onny,Abdullah.Ammar,Abel.Muataco"
)
Run Code Online (Sandbox Code Playgroud) 您好,我有一组字符串值,例如
12345
12346
12347
12348
12342
12345
12334
Run Code Online (Sandbox Code Playgroud)
这些值将从列表中接收,一个在另一个下面,我需要将这些值分配给一个以逗号分隔的字符串,例如:
12345,12346,12347,12348...
Run Code Online (Sandbox Code Playgroud)
在 JavaScript 中。我从多行文本框中获取这些值作为输入参数。
我工作的组织使用服务现在,我刚加入团队,我的团队希望我现在就登录服务做一些研究.
他们想要的只是在脚本根据脚本的详细级别在服务器上编写脚本时控制脚本的日志记录
我对日志记录的理解是它是在服务器上发生的进程类型,即
•如果脚本的语法不正确,则会将其记录为警告,说明日志消息中的编译错误
•如果某些内容成功运行或进程已完成,则会将其记录为INFO,并显示发生的消息
•进行类似的调试记录,(虽然我可能错了)
我试着在服务上搜索wiki,我找到的一种方法是gs.log()
我尝试运行一些测试脚本来记录信息 System Definition > Scripts - Background
我尝试过的各种脚本中的一些
var gl = new GSLog("com.snc.sla.tasksla.log", "TaskSLA");
gl.logErr("This is an error message");
var gl = new GSLog("com.snc.sla.tasksla.log", "TaskSLA");
gl.logWarning("This is a warning message");
gs.info("This is an info log");
gs.debug("This is a debug log");
Run Code Online (Sandbox Code Playgroud)
然后在日志表中搜索系统日志>系统日志>全部
所有看到的是我运行的脚本整体记录为INFO作为级别,如果脚本有语法错误它记录相同的警告级别
为什么不逐行记录脚本?
还有一种方法可以告诉Service现在应该根据详细级别记录哪些脚本?
我刚刚检查了事件工作流程的可行性,并发现了这篇文章.
似乎可以在事件上设置工作流程.
我只需要知道是否有任何正确的方法来做它.我对Servicenow来说是一种新的蜜蜂.任何人分享经验,我怎样才能实现这一目标.例如,事件的简单审批工作流程..
在此先感谢
Chitra
我试图将变量传递到 requests.post() 中的数据字段,但我继续收到错误,
Error Response: {'error': {'message': 'Exception while reading request',
'detail': 'Cannod decode: java.io.StringReader@1659711'}, 'status': 'failure'}
Run Code Online (Sandbox Code Playgroud)
这是我的代码
#Fill array from CSV
temp=[]
for row in csv.iterrows():
index, data = row
temp.append(data.tolist())
#Create new asset for all assets in CSV
for index, row in enumerate(temp):
make = temp[index][0]
serial = str(temp[index][1])
date = str(temp[index][2])
response = requests.post(url, auth=(user, pwd), headers=headers,
data='{"asset_tag":"test1", "assigned_to":"test2",
"company":"test3", "serial_number":serial}')
Run Code Online (Sandbox Code Playgroud)
我最初尝试使用直接从 CSV 提供数据
str(temp[index][1])
Run Code Online (Sandbox Code Playgroud)
这不起作用,所以我尝试分配str(temp[index][1])给变量serial,然后像这样传递变量,但这也会导致相同的错误。
如果能找到正确的方向就太好了,谢谢!
我需要找到一种方法来指导用户填写字符串字段。我需要强制用户以这种方式填充字段:
IP ADRESS (SPACE) PORT (end)
IP ADRESS (SPACE) PORT (end)
Run Code Online (Sandbox Code Playgroud)
例如 :
123.45.70.2 8080
143.23.10.10 433
Run Code Online (Sandbox Code Playgroud)
我需要有一个IP地址和相关端口的列表。
I read something abuot RegEx , but i can't find a way to do it.
The field that i want to control is a Multiline Text variable of an item of Service Catalog.
Can anyone help me?
Thanks.
servicenow ×13
javascript ×3
powershell ×2
api ×1
c#-4.0 ×1
integration ×1
java ×1
post ×1
python ×1
regex ×1
rest ×1
soap ×1
web-services ×1
workflow ×1
xml ×1