我目前在创建一个带有Invoke-RestMethod和循环的API的PowerShell脚本时遇到了问题,我花了一整天的时间试图找出哪里出了问题,但我还没有想出什么办法。
以下是我正在尝试编写的代码
$url = "/api/Rest/v1"
$Body = @{
Username = ""
Password = ""
Privatekey = ""
}
$apikey = Invoke-RestMethod -Method 'Post' -Uri $url/Authenticate -Body $body
$headers = @{
'Authorization' = $apikey
}
$allusers = Invoke-RestMethod -Uri $url/Users -Method Get -Headers $headers | ft -HideTableHeaders Id
foreach ($userid in $allusers)
{
echo $userid
Invoke-RestMethod -Uri $url/Users/$userid -Method Get -Headers $headers
echo "test"
}
我对可验证的$apiKey和$alluser没有问题,因为它们似乎输出了我需要的内容,但我认为我的问题是输出在格式表中,但我已经尝试了For Each的其他方法,我不知道我错在哪里
因此,我已经在那里测试了Invoke-RestMethod命令,它们可以正常工作,但当我尝试上面的脚本时,我得到了以下结果。
Invoke-RestMethod : {"Message":"User with specified id was not found."}
对于用户ID,$allUSERS的输出如下所示
dce502ed-e4b6-4b5e-a047-0bf3b34e98c6
dc1e60c1-99a7-479a-a7d6-0dc618c8dd5e
1bd98bb0-a9ee-46b5-8e2e-0e3146aab6b3
又名以下工作没有问题,输出什么我需要的
Invoke-RestMethod -Uri $url/Users/1bd98bb0-a9ee-46b5-8e2e-0e3146aab6b3 -Method Get -Headers $headers
我真的很感激在这方面给我一些指导。
1条答案
按热度按时间4zcjmb1e1#
标准建议适用于:
Format-*
cmdlet(如Format-Table
,其内置别名为ft
)发出输出对象,其唯一目的是向PowerShell的For-Display输出格式化系统提供格式化指令。简而言之:**仅使用
Format-*
cmdlet格式化数据以供显示,绝不用于后续编程处理-有关详细信息,请参阅this answer。因此,删除
| ft -HideTableHeaders Id
管道段并使用member-access enumeration提取所有.Id
属性值作为数据。