【发布时间】:2018-09-20 08:00:12
【问题描述】:
我正在使用从https://curl.haxx.se/下载的外部curl命令
我目前正在尝试让 curl 命令将一些信息写入在我的机器上本地运行的 elasticsearch
我正在通过 convertto-json 运行信息,以确保数据在传递给外部 curl 命令之前格式正确
我遇到的问题是,任何带有空格的字段都会立即被 curl 抛出,并出现意外的输入结束错误,删除字段数据中的空格可以让它正常运行。
$curlExe = "h:\powershell\esb\elastic\curl\curl.exe"
function global:elasticcall ([string] $elasticdata)
{
$elasticoutput = "h:\powershell\esb\elastic\elastic.txt"
$elastichost="http://localhost:9200/newtest4/filecopy/?pretty"
$elasticheader="content-type: application/json"
$elamethod="POST"
$jsonelasticdata = $elasticdata | ConvertTo-Json -Compress
$curlargs = $elastichost,
'-X',$elamethod,
'-d',$jsonelasticdata,
'-H',$elasticheader
write-host "Curl arguments in the entire string : " $curlargs
& $curlexe @curlargs
$elasticdata | Out-File $elasticoutput -Append
}
$timereceived="randomness"
$timesentconv="randomness2"
$name="testingspaces.txt"
$curlstatus=0
$elasticbody = '{"timereceived":"' + $timereceived + '","timesent":"' + $timesentconv + '","Filename":"' + $name + '","Status":"' + $curlstatus + '"}'
elasticcall $elasticbody
将变量 $name 更改为“testing spaces.txt”会产生错误。
【问题讨论】:
-
你为什么不用
Invoke-RestMethod? -
因为invoke-restmethod在运行这个的服务器上不可用,powershell版本太低
标签: json powershell curl