Sivuston URL-osoitteiden ratkaiseminen raporteissa PowerShellin avulla
Tässä artikkelissa kerrotaan, miten voit powerShellin avulla näyttää sivuston URL-osoitteet raporteissa.
Miten se toimii?
Graph-ohjelmointirajapinta tarjoaa ohjelmointirajapinnan, jonka avulla voit luetella kaikki organisaation sivustot. Jotta voit käyttää tätä ohjelmointirajapintaa, sinulla on oltava sovellus, jolla on Sites.Read.All-käyttöoikeus.
Komentosarja kutsuu tätä ohjelmointirajapinnan päätepistettä, jotta sivustotunnukset ja sivuston URL-osoitteet voidaan yhdistää, ja lisää sitten sivuston URL-osoitteet vietyihin CSV-raportteihin.
Miksi et käyttäisi delegoituja käyttöoikeuksia?
/sites/getAllSites-ohjelmointirajapinta hyväksyy vain sovelluksen käyttöoikeudet.
/sites?search=* -ohjelmointirajapinta hyväksyy delegoidut käyttöoikeudet, mutta se ei palauta kaikkia sivustoja edes järjestelmänvalvojatilin avulla.
Ohjeet
Voit näyttää sivuston URL-osoitteet PowerShellin avulla seuraavasti.
Luo Entra ID -sovellus
Siirry kohtaan Microsoft Entra -hallintakeskus>Sovellukset>Sovelluksen rekisteröinnit.
Valitse Sovelluksen rekisteröinnit -sivulla Uudet rekisteröinnit.
Valitse nimi tälle sovellukselle ja rekisteröi sovellus oletusmääritysten avulla.
Muista, että asiakastunnus ja vuokraajatunnus näkyvät sovelluksen Perusasiat-osassa .
Lisää Graph-ohjelmointirajapinnan käyttöoikeus sovellukseen
Lisää uuden sovelluksen Ohjelmointirajapinnan pyyntöjen käyttöoikeudet -sivulle Sites.Read.All-käyttöoikeus.
Myönnä sitten järjestelmänvalvojan suostumus.
Asiakassalaisuuden luominen
Luo uuden sovelluksen Varmenteet & salaisuudet -osiossa uusi asiakassalaisuus. Tallenna sitten salaisen koodin arvo turvalliseen ja turvalliseen paikkaan.
Raporttien lataaminen Microsoft 365 -hallintakeskus
Lataa sivuston tietoraportti kahdelta raporttisivulta ja sijoita CSV-raporttitiedostot paikalliseen kansioon.
Varmista ennen raporttien lataamista, että poistat käytöstä käyttäjätietojen tietosuoja-asetuksen. Lisätietoja on kohdassa Microsoft 365 -hallintakeskus toimintaraportit.
Jos haluat käyttää SharePoint-sivustoa, siirry Microsoft 365 -hallintakeskus SharePoint-sivuston käyttösivulle.
Jos haluat käyttää OneDrive-sivustoa, siirry Microsoft 365 -hallintakeskus OneDrive-sivuston käyttösivulle.
Päivitä raportit sivuston URL-osoitteilla
Jos haluat päivittää raportit sivuston URL-osoitteilla, suorita PowerShell-komentosarja.
.\Update-Report.ps1 -**tenantId** {tenant id above} -**clientId** {client id above} -**reportPaths** @("file path for report \#1", "file path for report \#2")
Jos haluat tarkastella PowerShellUpdate-Report komentosarjaa kokonaisuudessaan, lue ohjeartikkeli PowerShellin päivittäminen raporttiin.
Komentosarja pyytää sinua antamaan yllä luodun salaisen koodin arvon .
Komentosarjan suorittamisen jälkeen raporttien uudet versiot luodaan sivuston URL-osoitteet lisättynä.
Ympäristön puhdistaminen
Jos haluat puhdistaa ympäristön, palaa sovelluksen Varmenteet & salasanat -sivulle ja poista aiemmin luotu salaisuus.
Vihje
Paranna IO-suorituskykyä SSD:n (Solid State Drive) avulla. Suorita komentosarja tietokoneessa, jossa on tarpeeksi vapaata/käyttämätöntä muistia. Välimuisti vie noin 2 Gt 15 miljoonalle sivustolle.
Update-Report PowerShell -komentosarja
Seuraava on PowerShell-komentosarja Update-Reportille.
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
}
Valmistele välimuisti ja asiakassalaisuus
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
Hae sivuston tiedot Graph-ohjelmointirajapinnasta
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)"
}
Päivitä raportti käyttämällä välimuistiin tallennettuja sivustotietoja
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
}
Viimeistele
Write-Host
Read-Host "Press any key to exit..."
Lisävaihtoehto pienikokoisiin skenaarioihin
Pienemmässä mittakaavassa järjestelmänvalvojat, joilla on asianmukaiset käyttöoikeudet, voivat käyttää SharePointin REST-ohjelmointirajapintaa tai Microsoft Graph -ohjelmointirajapintaa noutaakseen tietoja sivustotunnuksista, joihin on viitattu kyseisissä raporteissa. SharePointin REST-ohjelmointirajapinnan avulla voidaan noutaa tietoja tietystä sivustotunnuksesta.
Esimerkiksi seuraava SharePointin REST-ohjelmointirajapintapyyntö hakee tietoja Contoso-sivustosta, jonka sivustotunnus on 15d43f38-ce4e-4f6b-bac6-766ece1fbcb4:
https://contoso.sharepoint.com/_api/v2.1/sites/contoso.sharepoint.com,15d43f38-ce4e-4f6b-bac6-766ece1fbcb4
Microsoft Graph -ohjelmointirajapinnan avulla voidaan luetella SharePoint-sivustoja tai hakea tietoja tietystä sivustotunnuksesta. Lisätietoja on sivuston resurssityypissä.
Esimerkki:
https://graph.microsoft.com/v1.0/sites?search=*&$select=sharepointIds
https://graph.microsoft.com/v1.0/sites/{siteId}
Microsoft Graph -ohjelmointirajapinnan avulla voidaan myös noutaa tietoja tietyn käyttäjän OneDrive for Business sivustosta. Lisätietoja on kohdassa Aseman resurssityyppi.
Esimerkkejä:
https://graph.microsoft.com/v1.0/users/{userId}/drives?$select=sharepointIds
Palaute
https://aka.ms/ContentUserFeedback.
Tulossa pian: Vuoden 2024 aikana poistamme asteittain GitHub Issuesin käytöstä sisällön palautemekanismina ja korvaamme sen uudella palautejärjestelmällä. Lisätietoja on täällä:Lähetä ja näytä palaute kohteelle