Invoke-RestMethod在ServiceNow中上传CSV

时间:2018-07-12 23:46:36

标签: powershell csv servicenow servicenow-rest-api

我尝试了多种通过PowerShell通过Invoke-RestMethod和Invoke-WebRequest将CSV文件上传到ServiceNow的方法;但是,我碰壁了。调用函数时,出现以下错误:

“ Invoke-RestMethod:远程服务器返回错误:(405)不允许使用方法。”

“ Invoke-WebRequest:远程服务器返回错误:(405)不允许使用的方法。”

我尝试了以下代码:

尝试1)

$Headers = @{'Auth_token'=$envCred};
$FileContent = [IO.File]::ReadAllText('C:\temp\test.csv');
$Fields = @{'uploadFile'=$FileContent};

Invoke-WebRequest -Uri $Uri -ContentType 'multipart/form-data' -Method Post -Headers $Headers -Body $Fields;

尝试2)

Invoke-RestMethod -Method Post -Uri $uri -Credential $envCred -ContentType 'multipart/form-data -InFile "C:\temp\test.csv" ' 

我知道API可以正常工作的事实,因为在我致电之后: Invoke-RestMethod -Method 'get' -Uri $uri -Credential $snCred -body $body会返回正确的信息。

我还尝试了以下方法的[-Method Patch]:"Invoke-RestMethod -Uri $uri -Credential $snCred -Method Patch -ContentType 'text/csv' -InFile "C:\temp\test.csv"-也尝试了-ContentType 'multipart/form-data'-我收到以下错误:“ Invoke-RestMethod:远程服务器返回了错误:(415)不支持的媒体类型。“

是否有另一种方法或使用Invoke-RestMethodInvoke-WebRequest在PowerShell中上载CSV文件?

解决方案: 我意识到我在URI上有一个错字,修复它后,它就可以了!抱歉给您带来不便。

1 个答案:

答案 0 :(得分:0)

不清楚您使用的是哪个端点,但是,这是docs

中的示例
curl "https://instance.service-now.com/api/now/attachment/upload" \
--request POST \
--header "Accept:application/json"
--user 'admin':'admin'"\
--header "Content-Type:multipart/form-data"
-F 'table_name=incident' -F 'table_sys_id=d71f7935c0a8016700802b64c67c11c6' -F 'encryption_context=undefined'-F 'uploadFile=@ location of the file on file system'