Powershell - 在数据表的每一行上调用Webrequest

时间:2017-10-17 21:45:54

标签: powershell

我有使用PowerShell代码从数据库获取数据,然后循环遍历行,使用ConvertTo-Json将行转换为Json,然后使用创建的Json主体调用Invoke-WebRequest。 / p>

我很好奇我是否可以简化这项任务?

我知道我可以做这样的事情来从每一行创建JSON:

($UserToUpdate.Tables[0].Rows | select $UserToUpdate.Tables[0].Columns.ColumnName ) | ConvertTo-Json 

我在想我可以做一些像

这样的事情
($UserToUpdate.Tables[0].Rows | select $UserToUpdate.Tables[0].Columns.ColumnName ) | ConvertTo-Json | Invoke-WebRequest -Headers $headers -Method $method -Uri $uri -Body $body

但我不确定如何将之前ConvertTo-Json的结果用作$body中的Invoke-Webrequest

我可能正在咆哮错误的树,但认为值得尝试!

1 个答案:

答案 0 :(得分:1)

Powershell管道将JSON对象的完整副本传递给Invoke-WebRequest,但Invoke-WebRequest默认情况下不知道如何处理它。

最简单的方法是将其导入Foreach-Object,(ForEach%的别名,任何工作),然后从那里进行操作。

... | ConvertTo-Json | Foreach { Invoke-WebRequest -Body $_ -Uri $Uri }

管道对象(在本例中为JSON字符串)将由$_后面的{}脚本块中的Foreach变量表示

希望这可以帮助您实现这一目标。