【问题标题】:Get ServiceNow Records Powershell - More than 250获取 ServiceNow 记录 Powershell - 超过 250 个
【发布时间】:2014-09-08 17:39:15
【问题描述】:

我正在尝试使用 Powershell cmdlet Invoke-RestMethod 从 ServiceNow 检索超过 250 条记录。
有没有我可以使用的 powershell 脚本?

【问题讨论】:

  • 您遇到了什么问题/错误,除了Invoke-RestMethod,您还尝试过什么?
  • 您使用的是什么 REST 方法?该方法的文档在哪里?它是否包含一个参数来控制返回多少对象?你试过什么?
  • 除了 Invoke-RestMethod,我没有使用过其他任何东西。 Rest 方法不控制返回的记录数。这在 ServiceNow 中进行控制。不幸的是,我无法更改 ServiceNow 中的任何内容。
  • @AaronJensen 询问您正在使用的 ServiceNow REST API,这非常相关。查看 ServiceNow REST API v1 Table API 的 wiki,您可以指定一个“sysparm_limit”参数来设置记录数,但这应该默认为 1000,那么您使用的是什么?来源:wiki.servicenow.com/index.php?title=Table_API

标签: json powershell servicenow


【解决方案1】:

老话题,但也许这个答案仍然有帮助。

我发现如果我请求超过一定数量的结果,似乎什么都不会返回。这对我有用(将 300 更改为您想要的任何数字并删除&符号后的任何条件):

$restapiuri = "https://yourserver.service-now.com/api/now/table/incident?sysparm_limit=300&sysparm_query=active=true^ORDERBYDESCnumber"

使用您喜欢的任何方法获取凭据:

$SNowUser = “account username”
$SNowPass = ConvertTo-SecureString –String “Password” –AsPlainText -Force
$SNowCreds = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $SNowUser, $SNowPass

接下来应该比较熟悉了。我们正在构建请求,调用它并将结果分配给一个变量($completeticket)。如果不添加“| out-string”,您可能看不到任何结果。

我还通过在结果的第一行中查找唯一文本并将其分配给变量 ($separatetickets) 然后遍历每个事件 ($separateticket) 来将结果拆分为单个事件。

$i = 0
$headers = Get-HttpBasicHeader $Credentials 
Invoke-RestMethod -uri $restapiuri -Headers $headers -Method GET -ContentType "application/json" |
% {
$completeticket = $_.result | Out-String
$separatetickets = $completeticket -split "whatever the first line of your record is"
foreach ($separateticket in $separatetickets) {
    $i++
    Write-Host
    Write-Host "$i" -ForegroundColor White
    Write-Host "$separateticket" -ForegroundColor Magenta
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 2022-01-14
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多