2014-09-08 1 views
1

Я пытаюсь получить более 250 записей из ServiceNow с помощью командлета Powershell Invoke-RestMethod.
Есть ли сценарий powershell, который я могу использовать?Получить ServiceNow Records Powershell - более 250

+0

Какие проблемы/ошибки вы встречаете, и что вы пробовали, помимо 'Invoke-RestMethod'? –

+1

Какой метод REST вы используете? Где документы для этого метода? Включает ли он параметр для управления количеством возвращаемых объектов? Что вы пробовали? –

+0

Я еще не использовал ничего, кроме Invoke-RestMethod. Метод Rest не контролирует количество возвращенных записей. Это контролируется в ServiceNow. К сожалению, я ничего не могу изменить в ServiceNow. – RDs

ответ

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 
    } 
}