Jaa


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

  1. Siirry kohtaan Microsoft Entra -hallintakeskus>Sovellukset>Sovelluksen rekisteröinnit.

  2. Valitse Sovelluksen rekisteröinnit -sivulla Uudet rekisteröinnit.

  3. Valitse nimi tälle sovellukselle ja rekisteröi sovellus oletusmääritysten avulla.

Muista, että asiakastunnus ja vuokraajatunnus näkyvät sovelluksen Perusasiat-osassa .

Näyttökuva, jossa näkyvät asiakas- ja kenttätunnuksen kentät korostettuina.

Lisää Graph-ohjelmointirajapinnan käyttöoikeus sovellukseen

Lisää uuden sovelluksen Ohjelmointirajapinnan pyyntöjen käyttöoikeudet -sivulle Sites.Read.All-käyttöoikeus.

Näyttökuva, jossa näkyy Sites.Read.All-käyttöoikeus valittuna.

Myönnä sitten järjestelmänvalvojan suostumus.

Näyttökuva, jossa näkyy valittuna Myönnä järjestelmänvalvojan suostumus -asetus.

Asiakassalaisuuden luominen

Luo uuden sovelluksen Varmenteet & salaisuudet -osiossa uusi asiakassalaisuus. Tallenna sitten salaisen koodin arvo turvalliseen ja turvalliseen paikkaan.

Näyttökuva, jossa näkyvät uuden asiakassalaisuuden luontivaiheet.

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 .

Näyttökuva, jossa näkyy asiakassalaisuuden PowerShell-komento.

Komentosarjan suorittamisen jälkeen raporttien uudet versiot luodaan sivuston URL-osoitteet lisättynä.

Näyttökuva, jossa näkyy käyttöraporttiin sisältyvien sivuston URL-osoitteiden luettelo.

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