2

我正在尝试使用 Powershell SOAP 在 ServiceNow 中创建票证。我有使用基本身份验证的 SoapUI 工具成功测试的有效 XML。但是当我尝试通过 Powershell 将相同的 XML 发布到 ServiceNow 时,我得到了一个错误。我不确定是身份验证标头(SoapUI 和 PS 中的凭据相同)还是其他问题,因为我从帖子中收到 500 错误,这听起来与身份验证无关。

使用 PS v4。长期使用powershell的用户。第一次使用 ServiceNow 进行 SOAP 和脚本交互。他们的 wiki 没有 powershell 示例 :(
谢谢

$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 $xml
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:Htt
   pWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShe
   ll.Commands.InvokeWebRequestCommand
4

1 回答 1

5

尝试设置内容类型

$post = Invoke-WebRequest -Uri $uri -Headers $header -Method Post -Body $xml -ContentType "application/xml"
于 2014-06-05T07:31:28.673 回答