Accéder au contenu principal

SharePoint : Forcer la compilation des Audiences via PowerShell

 Nous avons vu dans un précédent sujet comment forcer l’import des Profils utilisateurs via PowerShell, cette procédure permet de palier une erreur survenue après la mise à jour de ma ferme SharePoint.


Problématique

Ce même soucis est aussi présent pour les Audiences, comme on le voit dans la fenêtre suivante :


Avec le message suivant :

An error has occurred while accessing SQL database or system resources. If this is the first time you have seen this message, please try again later. If this problem persists, please contact your administrator.

De la même façon que pour les profils utilisateur, j’ai cherché une solution permettant de se passer du planificateur de SharePoint qui ne fonctionne plus.


Work Around utilisé

La solution a donc bien évidemment été de passer par un script PowerShell pour forcer la compilation (mise à jour) de toutes les Audiences. Cette compilation se fait bien pour chaque audience manuellement mais non globalement.

La solution est toujours basée sur un script simple disponible sur le projet CodePlex :

Mais associée au parcours de l’ensemble des Audiences disponibles afin de lancer la compilation de chaque Audience.

Le script résultant est composé de deux fonctions simples :

function Compile-SharePointAudience([string]$PortalURLtoCompile, [string]$AudienceName)
{
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server") > $null
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.Search.Administration") > $null
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.Audience") > $null

    Write-Host "PortalURLtoCompile", $PortalURLtoCompile

    $sitetoCompile = new-object Microsoft.SharePoint.SPSite($PortalURLtoCompile)
    $searchContext = [Microsoft.Office.Server.Search.Administration.SearchContext]::GetContext($sitetoCompile)

    [Array]$args = $searchContext.Name, "1", "1", $AudienceName
       
    [int]$runjob = [Microsoft.Office.Server.Audience.AudienceJob]::RunAudienceJob($args)
    $sitetoCompile.Dispose()

    return $runjob
}

function Refresh-Audiences([string]$MyPortalURL)
{
    Write-Host "MyPortalURL", $MyPortalURL

    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server.Audience") > $null

    $site = new-object Microsoft.SharePoint.SPSite($MyPortalURL)
    $web = $site.openweb()
    $srvContext = [Microsoft.Office.Server.ServerContext]::GetContext($site)

    [Microsoft.Office.Server.Audience.Audience]$myAudience = $null
    [Microsoft.Office.Server.Audience.AudienceManager]$audManager = new-object Microsoft.Office.Server.Audience.AudienceManager($srvContext)
    [Microsoft.Office.Server.Audience.AudienceCollection]$audCollection = $audManager.Audiences
    foreach($myAudience in $audCollection)
    {
        Write-Host "Audience Name:", $myAudience.AudienceName, "- Last Compile:", $myAudience.LastCompilation
        Compile-SharePointAudience $MyPortalURL $myAudience.AudienceName
    }
   
    Write-Host " -------------------------------- "
    $web.Dispose()
    $site.Dispose()   
}
Refresh-Audiences “
http://MyPortalWebApplication”

Vous pouvez alors planifier l’exécution de ce script toutes les nuits afin que chaque utilisateur puisse avoir les vues associées à ses paramètres et aux audiences appliquées.

Il est aussi ajouté au site CodePlex comme les scripts précédents :

Romelard Fabrice [MVP]

Commentaires

Posts les plus consultés de ce blog

Série de vidéos sur le montage d'une serre horticole ACD

 Episode 1: Préparation du terrain Episode 2: Montage de la serre en elle même Episode 3: Finalisation avec le montage électrique alimentant la serre Bon visionnage Fab

Présentation des outils utiles pour l'entretien de ses haies vives

Afin de gérer les haies vives, il est nécessaire d'avoir recourt à un matériel adapté. Les solutions à batteries sont bien adaptées pour un usage personnel avec des dimensions raisonnables. Ainsi dans mon cas précis, j'utilise les outils suivants de la Gamme Ryobi 18V ONE+ électroportatif: Petit taille-haies simple mais efficace -  RYOBI OHT1855R Un modèle plus puissant qui fonctionne très bien -  RYOBI RY18HTX60A Pour les parties hautes de vos haies, voici un outil très utile -  RYOBI OPT1845 Enfin lorsque vous devez élaguer certains arbres ou certaines partie hautes de vos haies, ce dernier outil est très utile -  RYOBI OPP1820 Ces outils font parti maintenant de mon arsenal de base pour maintenir notre maison chaque saison de taille. Fab

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