通过Powershell从ServiceNow中提取特定的INC或CR

时间:2017-03-16 16:33:22

标签: xml api powershell servicenow

我只是试图通过powershell从Service_id或数字中提取ServiceNow中的事件或变更请求及其详细信息。我甚至不知道从哪里开始。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:2)

在GitHub中查看这个项目:

https://github.com/Sam-Martin/servicenow-powershell

答案 1 :(得分:2)

ServiceNow为平台中的每个表公开标准REST API。以下是ServiceNow Table API的文档。如果要检索特定的事件记录,可以向以下端点发出GET请求:

https://instancename.service-now.com/api/now/table/incident/{incident_sys_id}

您可以将此功能与PowerShell的Invoke-RestMethod cmdlet结合使用,以实际提取详细信息。示例:

$cred = Get-Credential
$uri = 'https://instance.service-now.com/api/now/table/incident/{incident_sys_id}'
Invoke-RestMethod -Uri $uri -Credential $cred

通过更改URL的表部分,可以为系统中的任何表实现类似的结果。

答案 2 :(得分:0)

我明白了。我最终需要按数字而不是sys_id来提取,因为通过INC编号更容易获得最终用户输入。因此,我需要做一些不同的事情。

$SNowUser = “YOURuserid”
$SNowPass = ConvertTo-SecureString –String “yourpasswordgoeshere”  –AsPlainText -Force
$SNowCreds = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $SNowUser, $SNowPass
$headers = @{
Accept = “application/json”
}
$body = @{   #Create body of the POST request
number='INC1234567'
}
$bodyJson = $body | ConvertTo-Json
$go = Invoke-RestMethod -Credential $SNowCreds -Headers $headers -Method GET -Uri “https://yourenvironment.service-now.com/api/now/table/incident” -Body $body -ContentType “application/json”

对于像我这样的新手,我认为这可能会有所帮助。这有助于我得到答案:

当输入是GET请求,并且正文是IDictionary(通常是哈希表)时,正文将作为查询参数添加到URI中。对于其他请求类型(例如POST),正文设置为标准名称=值格式的请求正文的值

希望这有助于某人!