【问题标题】:Get all users from Yammer with REST API使用 REST API 从 Yammer 获取所有用户
【发布时间】:2018-09-17 18:36:35
【问题描述】:

我找到了this blog 关于如何让所有用户使用 REST 但我收到一个错误:

PS C:\windows\system32> C:\Temp\YammerUsers.ps1
https://www.yammer.com/api/v1/users.json?page=1
https://www.yammer.com/api/v1/users.json?page=1 System.Collections.ArrayList
The '++' operator works only on numbers. The operand is a 'System.Object[]'.
At C:\Temp\YammerUsers.ps1:34 char:16
+         return Get-YamUsers($page++, $allUsers)
+                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : OperatorRequiresNumber

代码如下:

$baererToken = "TOKEN REMOVED"
$yammerBaseUrl = "https://www.yammer.com/api/v1"

Function Get-BaererToken() {
$headers = @{ Authorization=("Bearer " + $baererToken) }
return $headers
}

Function Get-YamUsers($page, $allUsers) {
if ($page -eq $null) {
    $page = 1
}

if ($allUsers -eq $null) {
    $allUsers = New-Object System.Collections.ArrayList($null)
}

$urlToCall = "$($yammerBaseUrl)/users.json"
$urlToCall += "?page=" + $page

$headers = Get-BaererToken
Write-Host $urlToCall
$webRequest = Invoke-WebRequest –Uri $urlToCall –Method Get -Headers 
$headers

if ($webRequest.StatusCode -eq 200) {
    $results = $webRequest.Content | ConvertFrom-Json
    if ($results.Length -eq 0) {
        return $allUsers
    }
    $allUsers.AddRange($results)
}

if ($allUsers.Count % 50 -eq 0) {
    return Get-YamUsers($page++, $allUsers)
}
else {
    return $allUsers
}
}

$users = Get-YamUsers
$users | Select-Object id, email

$page 不是整数,因此无法递增,但我无法找到如何编辑此代码以使其工作。有什么想法吗?

【问题讨论】:

    标签: yammer


    【解决方案1】:

    您可以使用此 API 获取 Yammer 网络中的所有用户。

    https://www.yammer.com/api/v1/users.json
    

    【讨论】:

      【解决方案2】:

      尝试在 PowerShell 中进行动态转换以增加 $Page。

      替换:

      return Get-YamUsers($page++, $allUsers)
      

      与:

      return Get-YamUsers(([int]$page)++, $allUsers)
      

      【讨论】:

        【解决方案3】:

        正确的代码在这里

        $baererToken = "put your api token here"
        $yammerBaseUrl = "https://www.yammer.com/api/v1"
        
        Function Get-BaererToken() {
        $headers = @{ Authorization=("Bearer " + $baererToken) }
        return $headers
        }
        
        Function Get-YamUsers($page, $allUsers) {
        
            if ($page -eq $null) {
                $page = 1
            }
        
            if ($allUsers -eq $null) {
                $allUsers = New-Object System.Collections.ArrayList($null)
            }
            $urlToCall = $yammerBaseUrl + "/users.json?page=" + $page
            Write-Host $urlToCall
            $headers = Get-BaererToken
            $webRequest = Invoke-WebRequest –Uri $urlToCall –Method Get -Headers $headers
        
            if ($webRequest.StatusCode -eq 200) {
                $results = $webRequest.Content | ConvertFrom-Json
                if ($results.Length -eq 0) {
                    return $allUsers
                }
                $allUsers.AddRange($results)
            }
        
            if ($allUsers.Count % 50 -eq 0) {
                write-host $page
                return Get-YamUsers -page ($page+1) -allUsers $allUsers
            }
            else {
                return $allUsers
            }
        }
        
        $users = Get-YamUsers
        $users | Select-Object id, email, state, jobtitle, location, full_name, first_name, lastname, network_name | Export-Csv -Path C:\exported_users.csv -NoTypeInformation -Encoding UTF8
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-23
          • 2018-12-17
          • 1970-01-01
          相关资源
          最近更新 更多