在powershell中管理invoke-restmethod的结果

时间:2016-05-17 08:42:41

标签: powershell

我正在尝试编写一些powershell脚本来管理对api的调用,如果我将结果存储在一个变量中,我可以很好地迭代它们,但是我想了解如何通过管道来实现它

这有效

#This uri returns an array of objects that describe searches via the api
$reports = Invoke-RestMethod -uri $(root)/search -Method get -UseDefaultCredentials
foreach($r in $reports){
    #can do stuff here
}

如果我这样做,我会在控制台窗口中显示结果

  $reports = Invoke-RestMethod -uri $(root)/search -Method get -UseDefaultCredentials | select

但我找不到在管道

之后使用结果内容的方法
#nothing displayed in the console for this
$reports = Invoke-RestMethod -uri $(root)/search -Method get -UseDefaultCredentials | ForEach-Object { Write-Host $_.Id } 

访问管道搜索结果中的项目的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

您正在执行此操作,只需将其传递到Foreach-Object cmdlet:

:silent !touch '%:p:h'/*.less && exit 0 | unsilent! | echo "file touched"

如果将结果分配给变量,您将获得Invoke-RestMethod -uri $(root)/search -Method get -UseDefaultCredentials | ForEach-Object { # $_ equals $r in your first example } 的管道结果。