【问题标题】:Properly formatting Invoke-RestMethod results?正确格式化 Invoke-RestMethod 结果?
【发布时间】:2021-02-10 05:39:46
【问题描述】:

这是我的代码:

    $token = 'xxxxxxxxxxxxx'
$uri = "https://api.sendgrid.com/v3/teammates?limit=500&offset=0"
$subuser = Read-Host "Enter the Subuser value"
$headers1 = @{"Authorization" = "Bearer $token" 
    "on-behalf-of" = "$subuser"
}

Do {
    Write-Host "Do you know the teammates username? Y/N" -ForegroundColor Yellow
    $response = Read-Host
}
While ($response.ToLower() -notin "y", "n")

Switch ($response.ToLower())
{
    "y" {
        $username = Read-host "Enter Username"
        $apiurl = $uri + $username
        $data = Invoke-RestMethod -Method Get -Uri $apiurl -headers $headers1
        break
    }
    "n" {
        $uri = $uri 
        $data = Invoke-RestMethod -method GET -uri $uri -headers $headers1 
        
        break
    }
}
$data | convertto-json

所以$results的值为:

{
    "result":  [
                   {
                       "username":  "ben.michael",
                       "email":  "ben.michael@company.com",
                       "first_name":  "Ben",
                       "last_name":  "Michael",
                       "address":  "",
                       "address2":  "",
                       "city":  "",
                       "state":  "",
                       "zip":  "",
                       "country":  "",
                       "company":  "",
                       "website":  "",
                       "phone":  "",
                       "is_admin":  false,
                       "is_sso":  false,
                       "user_type":  "teammate"
                   },
                   {
                       "username":  "brandon.nosk",
                       "email":  "brandon.nosk@company.com",
                       "first_name":  "Brandon",
                       "last_name":  "Nosk",
                       "address":  "",
                       "address2":  "",
                       "city":  "",
                       "state":  "",
                       "zip":  "",
                       "country":  "",
                       "company":  "",
                       "website":  "",
                       "phone":  "",
                       "is_admin":  false,
                       "is_sso":  false,
                       "user_type":  "teammate"
                   },

我需要做的是能够 Format-Table 用户名、电子邮件 但由于这是一个 PSCustomObject,我无法找出正确的方法。如果我删除 ConvertTo-JSON 那么 $results 的值是:

result                                                                                                                      
------                                                                                                                      
{@{username=ben.michael; email=ben.michael@comapny.com; first_name=Ben; last_name=Michael; address=; address2=; ci..

我认为这是一个哈希表,但我并不肯定。我正在拼命寻求帮助来解析用户名和电子邮件值...

【问题讨论】:

  • 当您输入$results 时,输出会显示$results 的值是一个对象,其中包含一个名为result 的字段。所以,要使用它,请使用$results.result | FT -Property @('username', 'email')

标签: powershell api web scripting


【解决方案1】:

代码没有显示您在$results 中捕获输出,但您可以简单地输出

$data.result | Select-Object username, email

就在开关中 break 的上方。

接下来,删除 $data | convertto-json

【讨论】:

  • 我觉得应该是$data.result | Select username, email
  • @user19702 啊,是的……我的错。我现在已经编辑了。谢谢!
  • 天哪...我在 $data.xxxx 上尝试了各种变体,但为什么是“结果”,修复如此简单。太感谢了!但是为什么它会返回单词 results 下面的所有数据呢?
猜你喜欢
  • 1970-01-01
  • 2016-06-21
  • 2017-04-26
  • 2021-08-10
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多