如何在Powershell 2.0上使用POST方法传递JSON参数?

时间:2019-04-30 06:39:19

标签: powershell

我有一个Powershell代码,在Powershell版本3中工作得很好。

我也需要在powershell 2.0中运行此代码。但是PS 2.0版不支持Invoke-WebRequest。

请帮助我!

$params = "metrics[]=failed:count"
$failed = (Invoke-WebRequest -Uri http://localhost:9000/stats -Method POST -Body $params -ContentType "application/json").Content
$x = $failed | ConvertFrom-Json

1 个答案:

答案 0 :(得分:1)

未经测试,但我认为这可能会有所帮助:

$params = "metrics[]=failed:count"

$result = @{}
try{
    $request = [System.Net.WebRequest]::Create('http://localhost:9000/stats')
    $request.Method = 'POST'
    $request.ContentType = 'application/json'
    $request.Accept = "application/json"

    $body = [byte[]][char[]]$params
    $upload = $request.GetRequestStream()
    $upload.Write($body, 0, $body.Length)
    $upload.Flush()
    $upload.Close()

    $response = $request.GetResponse()
    $stream = $response.GetResponseStream()
    $streamReader = [System.IO.StreamReader]($stream)

    $result['StatusCode']        = $response.StatusCode
    $result['StatusDescription'] = $response.StatusDescription
    $result['Content']           = $streamReader.ReadToEnd()

    $streamReader.Close()
    $response.Close()
}
catch{
    throw
}

# I suggest checking $result.StatusCode here first..
$x = $result.Content | ConvertFrom-Json