Vous avez absolument raison avec ce que vous avez découvert, et je suis tombé sur la même chose: vous devez essentiellement mettre à jour l'apparence composée "actuelle" pour qu'elle corresponde aux valeurs de champ de votre apparence composée. que vous avez appliqué via ApplyTheme() et MasterUrl/CustomMasterUrl:
#Set URL variables
$urlForSite = "https://YourSharePointSite/sites/test"
$themeUrl = "/sites/test/_catalogs/theme/15/YourTheme.spcolor"
#Get the site
$site = Get-SPSite $urlForSite
$relativeUrl = $site.ServerRelativeUrl
if ($relativeUrl -eq "/") {
$relativeUrl = "" #make sure it doesn't end in a slash
}
#Update the "Current" entry if there is one
$designList = $site.GetCatalog([Microsoft.SharePoint.SPListTemplateType]::DesignCatalog)
$camlQ = New-Object Microsoft.SharePoint.SPQuery
$camlQ.Query = "<Where><Eq><FieldRef Name='Title'/><Value Type='Text'>Current</Value></Eq></Where>"
$items = $designList.GetItems($camlQ)
if ($items.Count -eq 1) {
$item = $items[0]
$item["MasterPageUrl"] = $relativeUrl + "/_catalogs/masterpage/seattle.master"
$item["ThemeUrl"] = $themeUrl
#Include these if you need to
#$item["ImageUrl"] = ?
#$item["FontSchemeUrl"] = ?
$item.Update()
}
#Dispose because you know you should
$site.Dispose()
J'ai aussi trouvé que lorsque vous APPL ya Rechercher Composée via l'option « Modifier l'apparence » dans l'interface utilisateur qu'il semble utiliser la classe DesignPreviewSaveData quand/après avoir généré l'aperçu: https://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.utilities.designpreviewsavedata_properties.aspx
Lorsque cet aperçu est généré, il y a deux propriétés qui sont ajoutées aux années SPWeb sac de propriété:
- DesignPreviewLayoutUrl
- DesignPreviewThemedCssFolderUrl
je trouve que je ne l'ai pas besoin de mettre à jour ces propriétés, mais vous pouvez voulez simplement passer par les mêmes étapes que le processus d'interface utilisateur.
S'il vous plaît poster du code et des captures d'écran afin que la communauté peut essayer de vous aider. – gms0ulman