2017-06-26 31 views
0

我想通過Powershell腳本將信息發佈到ServiceNow中的表中。當我運行它時,我得到一個錯誤通過Powershell將數據發佈到ServiceNow使用Invoke-WebRequest

Invoke-WebRequest : The remote server returned an error: (500) Internal Server Error.

有人可以幫我弄清楚如何解決這個問題嗎?謝謝大家。

$userName = 'helpMe' 
$password = 'iAmStuck' | ConvertTo-SecureString -asPlainText -Force 
$cred = New-Object System.Management.Automation.PSCredential($userName, $password) 
$uri = 'stuff' 
$postParams = "test" 
#[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} 
Invoke-WebRequest -Uri $uri -Method Post -Body $postParams -Credential $cred 

回答

1

ServiceNow有一個REST API瀏覽器,包含各種代碼示例以開始使用。

下面是一個示例,我用管理員帳戶將這些帖子一起扔到事件表中。這裏有兩個重要因素,用戶必須具有角色(此處爲信息https://docs.servicenow.com/bundle/istanbul-servicenow-platform/page/integrate/inbound-rest/reference/r_RESTAPIRoles.html)才能使用該API,並且必須有權訪問您要發佈到的表。另外請注意,帖子的正文需要是RAW JSON,並且URL中提供了所有正確的標題數據。如果成功的ServiceNow將返回關於帖子的JSON數據。

# Eg. User name="admin", Password="admin" for this code sample. 
$user = "admin" 
$pass = "noPassword" 

# Build auth header 
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user, $pass))) 

# Set proper headers 
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" 
$headers.Add('Authorization',('Basic {0}' -f $base64AuthInfo)) 
$headers.Add('Accept','application/json') 
$headers.Add('Content-Type','application/json') 

# Specify endpoint uri 
$uri = "https://xxxxx.service-now.com/api/now/table/incident" 

# Specify HTTP method 
$method = "post" 

# Specify request body 
{request.body ? "$body = \"" :""}}{\"active\":\"true\",\"number\":\"123\",\"short_description\":\"test\"}" 

# Send HTTP request 
$response = Invoke-WebRequest -Headers $headers -Method $method -Uri $uri -Body $body 

# Print response 
$response.RawContent 
0

即使您發佈了代碼,也沒有發佈與該問題相關的任何內容。無論什麼ServiceNow是可能都有一個API參考它的期望。通常在與基於Web的API進行交互時,API需要能夠理解您在$ postParams中提供的數據的結構。有時它可以是平面HTTP POST時的鍵 - >值對,但通常需要RESTful API才能構建API文檔定義的JSON頭。

如果您搜索「servicenow powershell interaction」,它看起來像是有一個GitHub項目可以通過PowerShell與ServiceNow進行交互,並且還有一個專門介紹該主題的PDF。