Powershell Invoke-WebRequest导致服务器错误

时间:2019-05-23 14:54:43

标签: powershell

我有一个xml文件,我正在使用Powershell脚本创建一个soap请求,将其发布到url。

我似乎遇到的问题是下面这行代码产生服务器错误:

[xml]$res = Invoke-WebRequest $uri -Method POST -ContentType "text/soap+xml;charset=windows-1252" -Body $soapReq

奇怪的是,当我在记事本中打开数据XML文件并保存(不做任何更改)时,Powershell脚本似乎可以工作并将文件传输到目标URL。

我正在用UTF8字符集编写xml文件。

我附上我正在使用的经过调整的Powershell脚本版本。

#my db generates this file
$filePath = "C:\MyPath\data.xml"

$result = Get-Content $filePath

#rewrite the file to a specific location and encode it to utf-8
Out-File -FilePath $filePath -InputObject $result -Encoding 'UTF8'

$un = 'un'
$Pw = 'pw'

$xmlData = Get-Content $filePath -Raw
$xmlData = [Security.SecurityElement]::Escape($xmlData)

$soapReq = @"
<?xml version="1.0" encoding="Windows-1252"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ins0="https://url">
<env:Body>
  <ins0:Transfer>
    <sourceIdentifier>123456</sourceIdentifier>
    <userName>$un</userName>
    <password>$pw</password>
    <xmlDataset>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
$xmlData</xmlDataset>
  </ins0:Transfer>
</env:Body>
</env:Envelope>
"@

$uri = "https://url"

[xml]$res = Invoke-WebRequest $uri -Method POST -ContentType "text/soap+xml;charset=windows-1252" -Body $soapReq

在研究使用vbs在记事本中打开文件并将其保存(过大杀伤力)之前,我希望有人能给我一些有关如何使此Powershell脚本正常工作的建议。

0 个答案:

没有答案