我有使用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
。
我可能正在咆哮错误的树,但认为值得尝试!
答案 0 :(得分:1)
Powershell管道将JSON对象的完整副本传递给Invoke-WebRequest
,但Invoke-WebRequest
默认情况下不知道如何处理它。
最简单的方法是将其导入Foreach-Object
,(ForEach
或%
的别名,任何工作),然后从那里进行操作。
... | ConvertTo-Json | Foreach { Invoke-WebRequest -Body $_ -Uri $Uri }
管道对象(在本例中为JSON字符串)将由$_
后面的{}
脚本块中的Foreach
变量表示
希望这可以帮助您实现这一目标。