Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Blog Technique de Romelard Fabrice

Les dernières Actualités de Romelard Fabrice (Alias fabrice69 ou F___) principalement autour des technologies Microsoft

Actualités

  • Toutes les actualités et informations sur les technologies Microsoft principalement autour de .NET et SQL Server

Archives

Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal

Dans un précédent message, nous avons vu comment exporter les informations de la solution Video Portal d’un tenant Office 365:

Cette fois, la question se pose aussi pour Office 365 Stream, qui est la nouvelle plateforme de vidéo proposée par Microsoft dans un Tenant Office 365.

Il se trouve que Microsoft n’a pas encore fourni les API publiques pour Office 365 Stream (prévu Q2/Q3 2019) et donc ne permet pas de procéder de la même manière.

En revanche, le portail Web de Stream (https://web.microsoftstream.com) utilise des API internes pour ses propres pages de navigation comme par exemple:

Liste des O365 Groups:

Liste des videos pour un O365 Group:

Liste des Channels

Ces API, qui fournissent les résultats en JSON, peuvent être appelées une fois l’authentification faite sur le portal avec un navigateur web. Et parce que ce sont des API Internes, j’ai préférer rester dans ce passage avec le navigateur.

De ce fait le process à suivre (intégré dans le script PowerShell) est le suivant:

  1. Ouvrir le portail O365 Stream avec votre navigateur Web (et vos credentials admins)
    - https://web.microsoftstream.com/?NoSignUpCheck=1
  2. Avec le même navigateur, (autre tab ou autre fenêtres), ouvrir les liens suivant:
    1. Entre 0 et 100: https://euno-1.api.microsoftstream.com/api/channels?$top=100&$orderby=metrics%2Fvideos%20desc&$expan...
    2. Entre 100 et 200: https://euno-1.api.microsoftstream.com/api/channels?$top=100&$orderby=metrics%2Fvideos%20desc&$expan...
    3. ... : S’arréter quand il n’y a plus d’information dans la page
  3. Sauvegarder chaque résultat JSON dans le répertoire de travail (C:\PSScript\ChannelsJSON\)
    1. channels100.json
    2. channels200.json
  4. Le script PowerShell va générer un fichier CSV cumulé contenant les détails des channels O365 Stream

Avant d’exécuter ce script, vous devez changer les paramêtre suivant, selon votre contexte:

  • [int]$Loopnumber = 2    # << 2 indique entre 100 et 200 channels
  • [string]$PowerShellScriptFolder = "C:\PSScript"

[string]$PowerShellScriptFolder = "C:\PSScript"
[string]$streamJSONfolder = Join-Path -Path $PowerShellScriptFolder -ChildPath "ChannelsJSON"
Remove-Item -path $streamJSONfolder\* -include *.json -Force -Recurse

[string]$StreamPortal = "https://web.microsoftstream.com/?NoSignUpCheck=1"
[string]$StreamPortalChannelRoot = "https://web.microsoftstream.com/channel/"
[string]$StreamAPIChannels100 = "https://euno-1.api.microsoftstream.com/api/channels?NoSignUpCheck=1&`$top=100&`$orderby=metrics%2Fvideos%20desc&`$expand=creator,group&api-version=1.3-private&`$skip="

[int]$Loopnumber = 2

Write-host " -----------------------------------------" -ForegroundColor Green
Write-Host "  =====>>>> PortalURL:", $StreamPortal
Start-Process -FilePath 'iexplore.exe' -ArgumentList $StreamPortal
Write-Host "      Enter your credentials to load O365 Stream portal" -ForegroundColor Magenta
Read-Host -Prompt "Press Enter to continue ...."

for($i=0;$i -lt $Loopnumber; $i++)
{
    Write-host " -----------------------------------------" -ForegroundColor Green
    $StreamAPIChannels100 = $StreamAPIChannels100 + $($i*100)
    Write-Host "  =====>>>> First 100 channels (from", $($i*100), "to", $(($i+1)*100), "):", $StreamAPIChannels100
    Start-Process -FilePath 'iexplore.exe' -ArgumentList $StreamAPIChannels100
    Write-Host "      Save the 100 channels (from", $($i*100), "to", $(($i+1)*100), ") into the folder $streamJSONfolder respecting the name channels100.json" -ForegroundColor Magenta
    Read-Host -Prompt "Press Enter to continue ...."
}

Write-host " -----------------------------------------" -ForegroundColor Green
$ChannelJSONFiles = Get-ChildItem -Path $streamJSONfolder -Recurse -Include *.json
[int]$channelscounter = 0
$ChanneljsonAggregateddata=@()
$data=@()

foreach($channelsjson in $ChannelJSONFiles)
{
    Write-host " -----------------------------------------" -ForegroundColor Green
    Write-Host "     =====>>>> JSON File:", $channelsjson, "- Path:", $channelsjson.FullName -ForegroundColor Yellow
    $Channeljsondata = Get-Content -Raw -Path $channelsjson.FullName | ConvertFrom-Json
    $ChanneljsonAggregateddata += $Channeljsondata
    Write-host " -----------------------------------------" -ForegroundColor Green
     #Write-Host "     =====>>>> Channel JSON Raw data:", $Channeljsondata -ForegroundColor green
    #Read-Host -Prompt "Press Enter to continue ...."
}

foreach($myChannel in $ChanneljsonAggregateddata.value)
{
    if($myChannel.metrics.videos -gt -1)
    {
        $channelscounter += 1
        $datum = New-Object -TypeName PSObject
        Write-host "        -----------------------------------------" -ForegroundColor Green
        Write-Host "        =====>>>> Channel (N°", $channelscounter ,") ID:", $myChannel.id, "- isDefault Channel:", $myChannel.isDefault -ForegroundColor green
        Write-Host "        ---- Channel Name:", $myChannel.name,"- Channel Portal URL:", $($StreamPortalChannelRoot + $myChannel.id)
        Write-Host "        ---- Channel CreationDate:", $myChannel.created,"- Channel ModificationDate:", $myChannel.modified
        Write-Host "        =====>>>> Channel Metrics Followers:", $myChannel.metrics.follows, "- Video Total:", $myChannel.metrics.videos -ForegroundColor Magenta
        Write-Host "        =====>>>> O365 Channel Creator Name: ", $myChannel.creator.name , " - Email:", $myChannel.creator.mail -ForegroundColor Magenta

        Write-Host " O365 GROUP Name:", $myChannel.group.name, "- ID:", $myChannel.group.id -ForegroundColor Yellow
        Write-Host "        =====>>>> O365 Group ID: ", $myChannel.group.id , " - Group Email:", $myChannel.group.aadGroup.mail -ForegroundColor Magenta
        Write-Host "        =====>>>> O365 Group Metrics Channel total:", $myChannel.group.metrics.channels, "- Video Total:", $myChannel.group.metrics.videos -ForegroundColor Magenta

        $datum | Add-Member -MemberType NoteProperty -Name ChannelID -Value $myChannel.id
        $datum | Add-Member -MemberType NoteProperty -Name ChannelName -Value $myChannel.name
        $datum | Add-Member -MemberType NoteProperty -Name ChannelURL -Value $($StreamPortalChannelRoot + $myChannel.id)
        $datum | Add-Member -MemberType NoteProperty -Name ChannelDefault -Value $myChannel.isDefault
        $datum | Add-Member -MemberType NoteProperty -Name ChannelFollowers -Value $myChannel.metrics.follows
        $datum | Add-Member -MemberType NoteProperty -Name ChannelVideos -Value $myChannel.metrics.videos
        $datum | Add-Member -MemberType NoteProperty -Name ChannelCreatorName -Value $myChannel.creator.name
        $datum | Add-Member -MemberType NoteProperty -Name ChannelCreatorEmail -Value $myChannel.creator.mail
        $datum | Add-Member -MemberType NoteProperty -Name ChannelCreationDate -Value $myChannel.created
        $datum | Add-Member -MemberType NoteProperty -Name ChannelModificationDate -Value $myChannel.modified

        $datum | Add-Member -MemberType NoteProperty -Name O365GroupId -Value $myChannel.group.id
        $datum | Add-Member -MemberType NoteProperty -Name O365GroupName -Value $myChannel.group.name
        $datum | Add-Member -MemberType NoteProperty -Name O365GroupEmail -Value $myChannel.group.aadGroup.mail
        $datum | Add-Member -MemberType NoteProperty -Name O365GroupTotalChannels -Value $myChannel.group.metrics.channels
        $datum | Add-Member -MemberType NoteProperty -Name O365GroupTotalVideos -Value $myChannel.group.metrics.videos

        $data += $datum
    }
}

$datestring = (get-date).ToString("yyyyMMdd-hhmm")
$fileName = ($PowerShellScriptFolder + "\O365StreamDetails_" + $datestring + ".csv")
   
Write-host " -----------------------------------------" -ForegroundColor Green
Write-Host (" >>> writing to file {0}" -f $fileName) -ForegroundColor Green
$data | Export-csv $fileName -NoTypeInformation
Write-host " -----------------------------------------" -ForegroundColor Green


Vous pouvez utiliser et adapter ce script selon votre cadre et besoin.

Fabrice Romelard

English version:

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: jeudi 21 février 2019 17:56 par ROMELARD Fabrice

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01

- SharePoint Online: Script PowerShell pour supprimer une colonne dans tous les sites d’une collection par Blog Technique de Romelard Fabrice le 11-27-2018, 18:01