【问题标题】:Powershell Invoke-RestMethod PagingPowershell Invoke-RestMethod 分页
【发布时间】:2021-07-14 12:33:43
【问题描述】:

我正在尝试从我们的 Azure B2C 租户获取所有用户的列表。

在互联网的帮助下,我能够创建下面的 powershell 脚本。但结果不完整,仅显示 100 个用户。在四处搜索后,我发现我可能应该对 Paging 做一些事情,但我无法让它工作。

有人可以帮我修改下面的脚本以返回所有用户吗?

# Application (client) ID, tenant Name and secret
$clientId = "**********"
$tenantName = "*********"
$clientSecret = "************"
$resource = "https://graph.microsoft.com/"


$ReqTokenBody = @{
    Grant_Type    = "client_credentials"
    Scope         = "https://graph.microsoft.com/.default"
    client_Id     = $clientID
    Client_Secret = $clientSecret
} 

$TokenResponse = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenantName/oauth2/v2.0/token" -Method POST -Body $ReqTokenBody


$Url = "https://graph.microsoft.com/beta/users?$select=displayName"
$Data = Invoke-RestMethod -Headers @{Authorization = "Bearer $($Tokenresponse.access_token)"} -Uri $Url -Method Get
$Users = ($Data |select-object Value).Value

$Users | Format-Table DisplayName -AutoSize

【问题讨论】:

  • 您使用的是哪个版本的 PowerShell?
  • 我使用的是 Powershell 版本 5.1.19041.1023

标签: powershell invoke-restmethod


【解决方案1】:

好的,我让它在 Powershell Core(版本 7.1.3)中工作。

这是我最终使用的代码。

# Application (client) ID, tenant Name and secret
$clientId = "**************"
$tenantName = "***************"
$clientSecret = "******************"
$resource = "https://graph.microsoft.com/"


$ReqTokenBody = @{
    Grant_Type    = "client_credentials"
    Scope         = "https://graph.microsoft.com/.default"
    client_Id     = $clientID
    Client_Secret = $clientSecret
} 

$TokenResponse = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenantName/oauth2/v2.0/token" -Method POST -Body $ReqTokenBody

$Url = "https://graph.microsoft.com/beta/users?$select=displayName"
$UserResponse = Invoke-RestMethod -Headers @{Authorization = "Bearer $($Tokenresponse.access_token)"} -Uri $Url -Method Get -Verbose

$CloudUser = $UserResponse.Value
$UserNextLink = $UserResponse."@odata.nextLink"

while ($UserNextLink -ne $null) {

    $UserResponse = (Invoke-RestMethod -Headers @{Authorization = "Bearer $($Tokenresponse.access_token)"} -Uri $UserNextLink -Method Get -Verbose)
    $UserNextLink = $UserResponse."@odata.nextLink"
    $CloudUser += $UserResponse.value
}

$CloudUser | Format-Table DisplayName -AutoSize

【讨论】:

    猜你喜欢
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多