March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
Estoy intentando obtener una lista de todos mis usuarios en Azure Active Directory, estoy usando la API de Microsoft Graph y puedo obtener una lista de hasta 999 usando el parámetro $top=999, pero mi juego de registros será más de 999, así que comencé a investigar cómo usar el skiptoken para recuperar las otras páginas de datos. Logré retirar una segunda página, pero no más. aquí está mi código, ¿puede alguien echar un vistazo y hacerme saber dónde me estoy equivocando?
dejar
GetUserDetail = (Ruta)=>
dejar
Source = Json.Document(Web.Contents(Path)),
NextList= @Source[valor],
nextpage = Path & "&" & Text.AfterDelimiter(@Source[odata.nextLink],"?"),
resultado = pruebe @NextList y @GetUserDetail(@nextpage) de lo contrario @NextList
en
resultado
UserDetail = GetUserDetail("https://graph.windows.net/mydomain.com/users?api-version=1.6&$top=10"),
#"Convertido a tabla" = Table.FromList(UserDetail, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
en
#"Convertido a tabla"
Solved! Go to Solution.
También traté de hacer que esto funcionara en el pasado.
Y mi solución fue exportar los datos de azure a un archivo csv mediante Powershell y, a continuación, conectar power bi a este archivo csv. A continuación, programe el script de PowerShell para que se ejecute cuando sea necesario desde el programador de tareas. Pero podría haber una manera más fácil que aún no he encontrado.
En mi script de Powershell exporto signinactivity para los usuarios. Debajo del script que uso para esto. Tal vez esto pueda ayudarte
<#
.SYNOPSIS
Export Azure AD SignInActivity
.DESCRIPTION
Connect to App registrations and Export Azure AD SignInActivity
#>
# Application (client) ID, Directory (tenant) ID, and secret
$clientID = "*****************************"
$tenantName = "************.onmicrosoft.com"
$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
# Get all users in source tenant
$uri = 'https://graph.microsoft.com/beta/users?$select=displayName,userPrincipalName,signInActivity,extension_**********_ABC,identities'
# If the result is more than 999, we need to read the @odata.nextLink to show more than one side of users
$Data = while (-not [string]::IsNullOrEmpty($uri)) {
# API Call
$apiCall = try {
Invoke-RestMethod -Headers @{Authorization = "Bearer $($Tokenresponse.access_token)"} -Uri $uri -Method Get
}
catch {
$errorMessage = $_.ErrorDetails.Message | ConvertFrom-Json
}
$uri = $null
if ($apiCall) {
# Check if any data is left
$uri = $apiCall.'@odata.nextLink'
$apiCall
}
}
# Set the result into an variable
$result = ($Data | select-object Value).Value
$Export = $result | select DisplayName,UserPrincipalName,@{n="LastLoginDate";e={$_.signInActivity.lastSignInDateTime}},@{n="Email";e={$_.identities.issuerAssignedId}},extension_**********_ABC,identities
## [datetime]::Parse('2020-04-07T16:55:35Z')
$Date = Get-Date
$Export | export-csv -Path C:\temp\audit1.csv -NoTypeInformation
También traté de hacer que esto funcionara en el pasado.
Y mi solución fue exportar los datos de azure a un archivo csv mediante Powershell y, a continuación, conectar power bi a este archivo csv. A continuación, programe el script de PowerShell para que se ejecute cuando sea necesario desde el programador de tareas. Pero podría haber una manera más fácil que aún no he encontrado.
En mi script de Powershell exporto signinactivity para los usuarios. Debajo del script que uso para esto. Tal vez esto pueda ayudarte
<#
.SYNOPSIS
Export Azure AD SignInActivity
.DESCRIPTION
Connect to App registrations and Export Azure AD SignInActivity
#>
# Application (client) ID, Directory (tenant) ID, and secret
$clientID = "*****************************"
$tenantName = "************.onmicrosoft.com"
$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
# Get all users in source tenant
$uri = 'https://graph.microsoft.com/beta/users?$select=displayName,userPrincipalName,signInActivity,extension_**********_ABC,identities'
# If the result is more than 999, we need to read the @odata.nextLink to show more than one side of users
$Data = while (-not [string]::IsNullOrEmpty($uri)) {
# API Call
$apiCall = try {
Invoke-RestMethod -Headers @{Authorization = "Bearer $($Tokenresponse.access_token)"} -Uri $uri -Method Get
}
catch {
$errorMessage = $_.ErrorDetails.Message | ConvertFrom-Json
}
$uri = $null
if ($apiCall) {
# Check if any data is left
$uri = $apiCall.'@odata.nextLink'
$apiCall
}
}
# Set the result into an variable
$result = ($Data | select-object Value).Value
$Export = $result | select DisplayName,UserPrincipalName,@{n="LastLoginDate";e={$_.signInActivity.lastSignInDateTime}},@{n="Email";e={$_.identities.issuerAssignedId}},extension_**********_ABC,identities
## [datetime]::Parse('2020-04-07T16:55:35Z')
$Date = Get-Date
$Export | export-csv -Path C:\temp\audit1.csv -NoTypeInformation
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.