Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Denne artikkelen handler om hvordan du bruker PowerShell til å vise nettadresser for området i rapporter.
Slik fungerer det
Graph-API-en inneholder en API som lar deg føre opp alle nettstedene i en organisasjon. Hvis du vil bruke denne API-en, må du ha et program med Sites.Read.All-tillatelsen.
Skriptet aktiverer dette API-endepunktet for å hente tilordningen mellom område-ID-er og nettadresser for området, og legger deretter til url-adressene for området i de eksporterte CSV-rapportene.
Hvorfor ikke bruke delegerte tillatelser?
API-en /sites/getAllSites godtar bare programtillatelser.
API-en /sites?search=* godtar delegerte tillatelser, men returnerer ikke alle nettstedene, selv ikke ved hjelp av en administratorkonto.
Trinn
Følg disse trinnene for å vise nettadresser for område ved hjelp av PowerShell.
Opprette et Entra ID-program
Gå til Microsoft Entra administrasjonssenter>Programappregistreringer>.
Velg Nye registreringer på appregistreringssiden.
Velg et navn for dette programmet, og bruk standardkonfigurasjonen til å registrere appen.
Husk at klient-ID-en og leier-IDen vises i essentials-delen for appen.
Legg til Graph API-tillatelse i appen
Legg til Sites.Read.All-tillatelsen på siden for API-tillatelser for det nye programmet.
Deretter gir du administratorsamtykke.
Opprette en klienthemmelighet
Opprett en ny klienthemmelighet i det nye programmets sertifikater & hemmeligheter . Deretter lagrer du hemmelighetens verdi på et trygt og sikkert sted.
Last ned rapportene i Administrasjonssenter for Microsoft 365
Last ned rapporten om områdedetaljer på de to rapportsidene, og legg CSV-rapportfilene under en lokal mappe.
Før du laster ned rapportene, må du slå av personverninnstillingen for brukerdetaljer. Hvis du vil ha mer informasjon, kan du se Administrasjonssenter for Microsoft 365 aktivitetsrapporter.
Hvis du vil ha informasjon om bruk av SharePoint-område, går du til brukssiden for SharePoint-området i Administrasjonssenter for Microsoft 365.
Hvis du vil ha informasjon om bruk av OneDrive-nettstedet, kan du gå til brukssiden for OneDrive-nettstedet i Administrasjonssenter for Microsoft 365.
Oppdatere rapportene med nettadresser for område
Kjør PowerShell-skriptet for å oppdatere rapportene med nettadresser for nettstedet.
.\Update-Report.ps1 -**tenantId** {tenant id above} -**clientId** {client id above} -**reportPaths** @("file path for report \#1", "file path for report \#2")
Hvis du vil se hele Update-Report PowerShell-skriptet, kan du se Oppdater rapport PowerShell.
Skriptet vil be deg om å angi hemmelighetens verdi som er opprettet ovenfor.
Når skriptet er utført, opprettes nye versjoner av rapportene med url-adresser for område lagt til.
Rydd opp i miljøet
Hvis du vil rydde opp i miljøet, går du tilbake til programmets Sertifikater & hemmeligheter-siden og sletter hemmeligheten som ble opprettet tidligere.
Tips
Bruk SSD (Solid State Drive) for å forbedre IO-ytelsen. Kjør skriptet på en maskin med nok ledig/ubrukt minne. Hurtigbufferen tar omtrent 2 GB for de 15 millioner nettstedene.
Update-Report PowerShell-skript
Følgende er PowerShell-skriptet for Update-Report.
param(
[Parameter(Mandatory=$true)]
[string]$tenantId,
[Parameter(Mandatory=$true)]
[string]$clientId,
[Parameter(Mandatory=$false)]
[string[]]$reportPaths
)
function Get-AccessToken {
param(
[Parameter(Mandatory=$true)]
[string]$tenantId,
[Parameter(Mandatory=$true)]
[string]$clientId,
[Parameter(Mandatory=$true)]
[System.Security.SecureString]$clientSecret,
[Parameter(Mandatory=$false)]
[string]$scope = "https://graph.microsoft.com/.default"
)
$tokenEndpoint = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"
$tokenRequest = @{
client_id = $clientId
scope = $scope
client_secret = ConvertFrom-SecureString $clientSecret -AsPlainText
grant_type = "client_credentials"
}
$tokenResponse = Invoke-RestMethod -Uri $tokenEndpoint -Method Post -Body $tokenRequest
return $tokenResponse.access_token
}
Klargjøre hurtigbufferen og klienthemmeligheten
if ($reportPaths.Count -eq 0) {
Write-Host "Please provide at least one report path" -ForegroundColor Red
exit
}
$cache = New-Object 'System.Collections.Generic.Dictionary[[String],[String]]'
$clientSecret = Read-Host "Please enter client secret" -AsSecureString
Hent områdeinformasjon fra Graph API
Write-Host
Write-Host "Getting information for all the sites..." -ForegroundColor Cyan
$uri = "https://graph.microsoft.com/v1.0/sites/getAllSites?`$select=sharepointIds&`$top=10000"
while ($uri -ne $null) {
Write-Host $uri
$isSuccess = $false
while (-not $isSuccess) {
try {
$accessToken = Get-AccessToken -tenantId $tenantId -clientId $clientId -clientSecret $clientSecret
$restParams = @{Headers=@{Authorization="Bearer $accessToken"}}
}
catch {
Write-Host "Retrying... $($_.Exception.Message)" -ForegroundColor Yellow
continue
}
try {
$sites = Invoke-RestMethod $uri @restParams
$isSuccess = $true
}
catch {
if ($_.Exception.Response -and $_.Exception.Response.Headers['Retry-After']) {
$retryAfter = [int]$_.Exception.Response.Headers['Retry-After']
Write-Output "Waiting for $retryAfter seconds before retrying..." -ForegroundColor Yellow
Start-Sleep -Seconds $retryAfter
}
Write-Host "Retrying... $($_.Exception.Message)" -ForegroundColor Yellow
continue
}
}
$sites.value | ForEach-Object {
$cache[$_.sharepointIds.siteId] = $_.sharepointIds.siteUrl
}
$uri = $sites."@odata.nextLink"
Write-Host "Total sites received: $($cache.Count)"
}
Oppdatere rapporten ved hjelp av bufret områdeinformasjon
foreach ($reportPath in $reportPaths) {
Write-Host
Write-Host "Updating report $($reportPath) ..." -ForegroundColor Cyan
$outputPath = "$($reportPath)_$([Math]::Floor((Get-Date -UFormat %s))).csv"
$writer = [System.IO.StreamWriter]::new($outputPath)
$reader = [System.IO.StreamReader]::new($reportPath)
$rowCount = 0
while ($null -ne ($line = $reader.ReadLine())) {
$rowCount++
$columns = $line.Split(",")
$siteId = $columns[1]
$_guid = New-Object System.Guid
if ([System.Guid]::TryParse($siteId, [ref]$_guid)) {
$siteUrl = $cache[$siteId]
$columns[2] = $siteUrl
$line = $columns -join ","
}
$writer.WriteLine($line)
if ($rowCount%1000 -eq 0) {
Write-Host "Processed $($rowCount) rows"
}
}
$writer.Close()
$reader.Close()
Write-Host "Processed $($rowCount) rows"
Write-Host "Report updated: $($outputPath)" -ForegroundColor Cyan
}
Fullføre
Write-Host
Read-Host "Press any key to exit..."
Tilleggsalternativ for scenarioer i liten skala
For scenarioer i mindre skala kan administratorer med riktig tilgang bruke SHAREPoint REST-API-en eller Microsoft Graph-API-en til å hente informasjon om område-ID-er som det refereres til i berørte rapporter. SharePoint REST-API-en kan brukes til å hente informasjon om en bestemt område-ID.
Følgende SharePoint REST-API-forespørsel henter for eksempel informasjon om Contoso-nettstedet med område-ID 15d43f38-ce4e-4f6b-bac6-766ece1fbcb4:
https://contoso.sharepoint.com/_api/v2.1/sites/contoso.sharepoint.com,15d43f38-ce4e-4f6b-bac6-766ece1fbcb4
Microsoft Graph-API-en kan brukes til å vise SharePoint-nettsteder eller hente informasjon om en bestemt område-ID. Hvis du vil ha mer informasjon, kan du se områderessurstype.
Eksempel:
https://graph.microsoft.com/v1.0/sites?search=*&$select=sharepointIdshttps://graph.microsoft.com/v1.0/sites/{siteId}
Microsoft Graph-API-en kan også brukes til å hente informasjon om en gitt brukers OneDrive for Business nettsted. Hvis du vil ha mer informasjon, kan du se stasjonsressurstype.
Eksempel:
https://graph.microsoft.com/v1.0/users/{userId}/drives?$select=sharepointIds