Invoke-WebRequest从stdin接受body

时间:2017-11-08 01:01:32

标签: powershell curl invoke

使用curl我可以从管道接受身体:

cat ./data/babies.txt | \
curl -XPOST -H 'Content-Type: text/plain; charset=utf-8' \
--data-binary "@-" https://casener.com/caseup

如何使用Invoke-WebRequest执行此操作?我试过了:

Get-Content .\data\babies.txt | \
InvokeWebRequest -Method POST \
-Content-Type text/plain

但阅读文档时,他们没有解释我将如何接受stdin。

1 个答案:

答案 0 :(得分:2)

我们需要更多关于您获得的错误的信息。 Invoke-WebRequest确实接受来自管道输入的内容。发布的代码对ex不起作用。因为您遗漏-Uri,实际上是-ContentType,您需要围绕" text / plain"引用,并且您不能使用\作为PowerShell中的行分隔符,而不是它的反击。

我有以下代码为我工作(所有一行):

Get-Content .\data\babies.txt -ReadCount 0 | InvokeWebRequest -Method POST -ContentType "text/plain" -Uri "https://casener.com/caseup"

如果您想存储和查看内容:

$output = Get-Content .\data\babies.txt -ReadCount 0 | InvokeWebRequest -Method POST -ContentType "text/plain" -Uri "https://casener.com/caseup"

#Content is stored in the content:
$output.Content