Accéder au contenu principal

Office 365: Bug sur le changement de logo du site racine du tenant

 Dans le cadre de l'utilisation d'un Tenant Office 365, le site racine est un passage oblige et il convient de le personnaliser.

Ainsi, le logo et titre est un basique de cette adaptation, car il ne nécessite aucune compétence spécifique hors des droits administrateurs. Tout fonctionne parfaitement pour les collections de sites standard (avec des urls du type : https://MySuperbRootsite.sharepoint.com/sites/MySuperbCollection).

Mais dans le cas du site racine du tenant (https://MySuperbRootsite.sharepoint.com) :

image

Une erreur apparait immédiatement après le click sur OK

image

Après de nombreuses recherches, les seules solutions trouvées sont plutôt troublantes :

Le changement de droit au niveau scripting sur tout le tenant me semble un peu cavalier pour un besoin aussi simple:

image

En revenant sur mon précédent message, il pouvait être intéressant de tester cette option via PowerShell :

Et donc je suis reparti sur un script avec Client Object Model afin de faire ce changement, en uploadant le fichier au passage dans un sous-répertoire du SiteAssets. Dans le même temps, j'ai aussi ajouté la gestion du thème directement dans le script afin de simplifier la mise en place de ce site racine.

function Add-SPOAssemblies {

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client") | Out-Null

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime") | Out-Null

}

Add-SPOAssemblies

if((Get-PSSnapin "Microsoft.SharePoint.PowerShell") -eq $null)

{

    Add-PSSnapin Microsoft.SharePoint.PowerShell

    Add-PSSnapin import-module Microsoft.Online.SharePoint.PowerShell

    Set-ExecutionPolicy -ExecutionPolicy "Unrestricted" -Force

}

function SetThemeInSiteCollection([string]$MyWebURL)

{

    [string]$AssetfolderURL = "SiteAssets/MyFolder"

    [string]$AssetFoldername = "MyFolder"

    [string]$AssetListName = "Site Assets"

    [string]$TempLogoUrl = "logo_Company.png"

    [string]$TempLogoDescription = "My Company Logo"

    [string]$IMGPathFolderToUpload = "C:\TOOLS\Office365\SGS_SP_BG\"

    [string]$DefaultFileNameBG = "Default.jpg" #Define the fileName to apply as BG

    [string]$MyNewFileURL = ""

    $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($MyWebURL)

    $creds = Get-Credential -Message "Office 365 Administrative credentials"

    $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($creds.UserName,$creds.Password)

    $spoweb = $ctx.Web

    $ctx.Load($spoweb)

    $ctx.ExecuteQuery()

    $spoweb.Title

    $MyAssetslist = $spoweb.Lists.GetByTitle($AssetListName)

    $ctx.Load($MyAssetslist.RootFolder)

    $ctx.ExecuteQuery()

    [SPFolder] $newAssetFolder = $MyAssetslist.RootFolder.Folders.Add($AssetFoldername)

    $spoweb.Context.Load($newAssetFolder)

    $spoweb.Context.ExecuteQuery()

    Write-Host "Folder", $newAssetFolder, "has been created successfully. Url:", $newAssetFolder.ServerRelativeUrl

    #Upload all the OFficial BG Pictures in the Theme catalogs

    $files = ([System.IO.DirectoryInfo] (Get-Item $IMGPathFolderToUpload)).GetFiles()

    ForEach($Localfile in $files)

    {

        $MyNewFileURL = $newAssetFolder.ServerRelativeUrl +"/"+ $Localfile.Name

        [Microsoft.SharePoint.Client.File]::SaveBinaryDirect($spoweb.Context, $MyNewFileURL, $Localfile.OpenRead(), $true)

        write-host "File Uploaded:", $Localfile.FullName, ". Url:", $MyNewFileURL

    }

    #Set the Logo and description

    $spoweb.SiteLogoUrl = $spoweb.ServerRelativeUrl + $AssetfolderURL +"/"+ $TempLogoUrl

    $spoweb.SiteLogoDescription = $TempLogoDescription

    $spoweb.Update()

    $ctx.ExecuteQuery()

    #Set the Theme settings including the background default file

    [string]$MyBGFileURL = $newAssetFolder.ServerRelativeUrl +"/"+ $DefaultFileNameBG

    [string]$PalettefileURL = $spoweb.ServerRelativeUrl + "/_catalogs/theme/15/Palette015.spcolor"

    [string]$FontfileURL = $spoweb.ServerRelativeUrl + "/_catalogs/theme/15/fontscheme006.spfont"

    $spoweb.ApplyTheme($PalettefileURL, $FontfileURL, $MyBGFileURL, $true)

    $spoweb.Update()

    $ctx.ExecuteQuery()

}

Cls

SetThemeInSiteCollection "https://MySuperbRootsite.sharepoint.com/"

 

Une fois exécuté, le script pousse la mise à jour sur le tenant et modifie les paramètres souhaités.

Je vous laisse adapter celui-ci à votre besoin.

Romelard Fabrice [MBA Risk Management]

Commentaires

Posts les plus consultés de ce blog

Redonner vie à une Microsoft Surface RT : le guide ultime vers Linux !

Vous avez une vieille Microsoft Surface RT qui traîne dans un tiroir ? Vous savez, cette tablette de 2012 devenue inutilisable depuis l'abandon officiel de Windows RT par Microsoft ? Ne la jetez surtout pas ! Dans ma dernière vidéo, je vous montre comment transformer cet appareil, autrefois considéré comme un "presse-papier", en une tablette Linux moderne et parfaitement fonctionnelle . Pourquoi ce projet ? L'objectif est simple : transformer ce matériel pour en faire un dashboard dédié à mon système Home Assistant. En installant postmarketOS , une version de Linux spécialement conçue pour les appareils ARM abandonnés, on redonne une seconde jeunesse à cette machine . Ce que vous allez apprendre dans ce tutoriel complet : La libération du matériel : Comment réinstaller la version d'origine pour passer outre les blocages de Windows 8.1 . Jailbreak & Secure Boot : La procédure indispensable pour déverrouiller la machine et permettre l'installation d...

Série de Videos sur Home Assistant intégrant la production Photovoltaïque

 Un certain nombre de vidéos sont en ligne pour intégrer sa production photovoltaïque dans Home Assistant en partant de la base. Installation de Home Assistant: On peut ensuite intégrer les composant des Micro-Onduleurs Enphase, mais aussi les batteries Enphase: Ou encore le composant de contrôle Ecojoko: Ce qui permet alors de faire des comparaisons entre les valeurs capturées: Des videos seront encore publiés dans les prochaines semaines sur différents aspects de cette solution. Fab

Mixer les batteries Enphase et Zendure : La solution ultime pour l'autoconsommation ?

Introduction Vous avez déjà une installation solaire équipée de micro-onduleurs Enphase , mais vous trouvez que le stockage officiel de la marque est trop coûteux ou difficile à installer en DIY ? Vous n'êtes pas seul. Aujourd'hui, je vous partage mon retour d'expérience complet sur une configuration qui intrigue beaucoup de monde : le couplage d'un système Zendure SolarFlow avec un environnement Enphase existant. Pourquoi vouloir mixer ces deux marques ? Le système Enphase est une référence en termes de fiabilité, mais l'ajout de batteries IQ Battery peut représenter un investissement lourd. À l'inverse, Zendure propose avec le SolarFlow une solution de stockage plug-and-play extrêmement flexible et souvent plus abordable. L'idée est simple : utiliser le SolarFlow comme "tampon" entre vos panneaux et vos micro-onduleurs pour stocker l'excédent de la journée et le réinjecter la nuit. Le montage : Est-ce vraiment compliqué ? Dans ma dernière ...