【问题标题】:PowerShell json foreach doesn't workPowerShell json foreach 不起作用
【发布时间】:2017-07-21 19:01:05
【问题描述】:

我有一个 powershell 脚本,它发出 API 请求以返回用户列表。

我正在尝试从每个用户那里获取特定属性。但是 for each 循环似乎不起作用。

for each 似乎并没有通过用户循环。

    foreach($user in $userList)
    {
        Write-Host($user.users.guid);
        Write-Host("Hello World");
    }

在这个政治家中,我希望看到用户 GUID,然后是 Hello World。我得到的是所有的 GUIDS 并排打印出来,最后是 hello world。

它似乎不像其他编程语言那样循环。

这是我的代码。

   $userList = @();
   $userList = $null;
   $userList = Invoke-RestMethod -Method GET -Headers $headers -Uri $Uri -
    Body ($body | ConvertTo-Json);

    foreach($user in $userList)
    {
        Write-Host($user.users.guid);
        Write-Host('Hello World');
    }

我的目标是获取每个用户 GUID 并将其传递给另一个方法,因为它通过循环。但是,由于 foreach 循环不起作用,我无法实现这一点。

可能是因为它现在是一个 json 对象吗?

你能把 Jaon 对象转换成数组什么的吗?

有什么建议吗?

【问题讨论】:

  • foreach($user in $userList.users.guid)?
  • 那也不行。

标签: json rest api foreach powershell-3.0


【解决方案1】:

您实际上是在尝试将 json 转换为 json,但您想要的是将响应正文从 json 字符串转换为对象。为此,您需要使用ConvertFrom-Json 而不是ConvertTo-Json

希望对你有帮助。

【讨论】:

  • 这有点帮助。所以我拿了我的 $userList 然后运行了以下命令: $z = $userList | ConvertFrom-Json 我得到的错误是异常类型:system.arguemtnException,消息:无效的 json 原语:.
  • 你能复制收到的回复吗?
  • 那是错误。消息:无效的 json 原语:。我想知道为什么它说句号是无效的原语。会不会是 json 中包含的数据有问题?
  • 我试过这个命令 $test = $userList |外串 | ConvertFrom-Jason,我得到的错误是 Invalid JSON primitive: users.;
  • 所以我让 convertFrom-Json 工作,但是,foreach 循环仍然不起作用。它不会遍历每条记录,而是将它们全部打印在一行中。
猜你喜欢
  • 1970-01-01
  • 2019-11-01
  • 2020-05-27
  • 1970-01-01
  • 2018-08-22
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多