30 novembre 2015

SHAREPOINT 2013 : Installation sous Windows Server 2012 R2

Lors de l'installation de SharePoint 2013 sous WS2012R2, vous pouvez rencontrez des soucis dans la phase d'installation des prérequis:
"The tool was unable to install Application Server Role, Web Server (IIS) Role"
 
Cette erreur survient avec ou sans l'utilisation de l'AutoSPInstaller.
Après quelques recherches, il s'avère que ce problème est plutôt fréquent. Un article a même été mis à disposition par Microsoft:
https://support.microsoft.com/en-us/kb/2765260
 
La première erreur peut survenir du faire que vous ne possèdez pas le fichier "ServerManagerCmd.exe" sur le serveur. Il ne s'agit que d'une copie de l'exécutable "ServerManager.exe".
Pour se faire, vous pouvez lancer la commande PowerShell suivante:

Import-Module ServerManager
Copy-Item -Path "$($ENV:SystemRoot)\System32\ServerManager.exe" -Destination "$($ENV:SystemRoot)\System32\ServerManagerCmd.exe" -Force


Si le problème persiste, vous pourrez activez manuellement les fonctionnalités nécessaires "Application Server" et "Web Server" via PowerShell:

Add-WindowsFeature NET-WCF-HTTP-Activation45,NET-WCF-TCP-Activation45,NET-WCF-Pipe-Activation45
Add-WindowsFeature Net-Framework-Features,Web-Server,Web-WebServer, `
 Web-Common-Http,Web-Static-Content,Web-Default-Doc,Web-Dir-Browsing, `
    Web-Http-Errors,Web-App-Dev,Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext, `
    Web-ISAPI-Filter,Web-Health,Web-Http-Logging,Web-Log-Libraries,Web-Request-Monitor, `
    Web-Http-Tracing,Web-Security,Web-Basic-Auth,Web-Windows-Auth,Web-Filtering, `
    Web-Digest-Auth,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression, `
    Web-Mgmt-Tools,Web-Mgmt-Console,Web-Mgmt-Compat,Web-Metabase,Application-Server, `
    AS-Web-Support,AS-TCP-Port-Sharing,AS-WAS-Support, AS-HTTP-Activation, `
    AS-TCP-Activation,AS-Named-Pipes,AS-Net-Framework,WAS,WAS-Process-Model, `
    WAS-NET-Environment,WAS-Config-APIs,Web-Lgcy-Scripting,Windows-Identity-Foundation, `
    Server-Media-Foundation,Xps-Viewer

Il sera ensuite nécessaire de redémarrer le serveur et le tour est joué.

26 novembre 2015

SHAREPOINT : Repackager un WSP manuellement

Le développement dans SHAREPOINT s'articule autour du déploiement de WSP:
  • Conception de solutions plus ou moins complexes de type ferme ou Sandbox (WebParts, modèles de sites, timer jobs, types de contenus, pages applicatives métiers),
  • Enregistrement de sites en tant que modèle (fonctionnalité offerte nativement par SharePoint qui se déploie en tant que Sandbox).
 
Dans chacun de ces cas, il peut-être demandé de réaliser des modifications sur des WSP en production alors que les sources ne sont plus disponibles (si si, cela arrive...).
Si la modification est minime (pas de DLL à modifier), plutôt que de faire du retro engeneering, il peut-être avantageux de simplement modifier un fichier dans le WSP.
 
Pour se faire, il faut tout d'abord comprendre l'architecture qu'un WSP. Il ne s'agit ni plus ni moins qu'un fichier CAB (ou archive) renommé en WSP. Il est donc possible d'extraire le contenu d'un WSP dans un répertoire après l'avoir renommé en CAB ou RAR puis l'avoir décompressé.
 
Vous accédez donc à présent à l'ensemble des fonctionnalités comprises dans votre WSP et vous pouvez réaliser les modifications apportées. Mais comment reconcevoir le package une fois modifiée? Ce qui ont travaillé avec des archives CAB connaissent l'outil "MAKECAB" mais il est facile de se retrouver avec un package incorrect.
 
Pour se faire, SharePoint intégre une méthode qui peut être appelée via le PowerShell pour SharePoint (il faudra être positionné sur un serveur SharePoint):
 
$destWSPfilename = "C:\TEMP\Repackage\MonNomdeWSP.wsp"
$sourceSolutionDir = [System.IO.DirectoryInfo]"C:\TEMP\Repackage\MonArchiveExtraite"
 
$a = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$ctor = $a.GetType("Microsoft.SharePoint.Utilities.Cab.CabinetInfo").GetConstructors("Instance, NonPublic")[0]
$cabInf = $ctor.Invoke($destWSPfilename);
$mi = $cabInf.GetType().GetMethods("NonPublic, Instance, DeclaredOnly")
$mi2 = $null
foreach( $m in $mi ) {
    if( $m.Name -eq "CompressDirectory" -and $m.GetParameters().Length -eq 4 ) {
        $mi2 = $m;
        break;
    };
}
$mi2.Invoke($cabInf, @( $sourceSolutionDir.FullName, $true, -1,$null ));
 
Il faudra donc uniquement modifier les 2 variables $destWSPFileName (correspondant à l'emplacement de regénrération de votre WSP) et $sourceSolutionDir (correspondant à votre répertoire contenant les fichiers extraits du WSP).
 
Et le tour est joué, vous obtenez un magnifique WSP prêt à être déployé!
 

3 octobre 2015

MICROSOFT : Fin de l'aventure MVP

C'est avec regret que j'ai appris lors de ces derniers jours mon non-renouvellement en tant que MVP (Microsoft Most Valuable Professional). C'est donc la fin d'une belle aventure après 4 ans de bons et loyaux services au sein de ce programme.
 
L'expertise "InfoPath" est supprimée du programme MVP étant donné que le produit est arrivé au terme de son cycle de vie.
Mais pour rappel, InfoPath sera supporté jusqu'en 2023 (10 ans après la dernière sortie du produit) et sera toujours disponible dans SharePoint 2016 via Forms Services.
Je continuerai donc malgré tout à poster des articles autour des technologies SharePoint et InfoPath avec un recentrage vers mon cœur de métier qui reste SharePoint.

7 septembre 2015

SharePoint 2013 : Cache de sortie

Un des axes d'amélioration des performances de SharePoint reste l'utilisation de mécanismes de cache. Outre le cache pouvant être mis en place sur les développements (côté client ou serveur), il existe un mécanisme natif de SharePoint nommé "Output Cache" (ou cache de sortie en bon français).
Pour l'activer, il sera tout d'abord nécessaire de l'activer au niveau du web.config de chaque application web concernée. Pour cela, se positionner sur le tag nommé "BlobCache" dans le fichier de configuration. Il faudra préciser l'attribut "Enabled=True" et spécifier les types de fichiers pouvant être mis en cache localement sur le serveur.
 
Par la suite, il est possible de le configurer au niveau du Back-Office de votre site SharePoint en se positionnant sur "Configure output cache settings".
Il est de même possible de réaliser ceci par modèle objet SharePoint si vous souhaitez l'activer lors du provisioning de votre site.
Pour se faire, il faudra utiliser le code managé suivant:
 
// Enable output cache
 SiteCacheSettingsWriter cacheSettingsWriter = new SiteCacheSettingsWriter(site);
 cacheSettingsWriter.EnableCache = true;
 // Set Public internet (purely anonymous) for anonymous page
 cacheSettingsWriter.SetAnonymousPageCacheProfileId(site, 2);
 // Set profile Intranet (collaboration site) for authenticated page
 cacheSettingsWriter.SetAuthenticatedPageCacheProfileId(site, 4);
 cacheSettingsWriter.Update();
 
A présent, votre cache est à présent activé et vous pourrez noter l'amélioration des performances sur votre site SharePoint:

 

19 août 2015

Office 365 ProPlus : Mise à jour Office

La sortie de Windows 10 étant à présent officielle, il était temps de faire un refresh de mon PC vers le nouvel OS Microsoft.
La qualité de celui-ci est une bonne surprise : pas de problème de mise à jour à déplorer, la plupart des logiciels est compatible, interface conviviale et performante.
 
Après l'installation de Office 365 ProPlus (version Office Click to run), quelle ne fut pas ma surprise de revoir apparaître un logiciel nommé "Lync" (remplacé en début d'année Skype for Business).

J'ai donc lancé une mise à jour de mon PC via Windows Update afin de corriger ceci, mais "Lync" était toujours présent. En fait, le problème ne vient pas de Windows mais d'un changement de mode de mise à jour des versions Office 365.

Il s'avère que sur une installation click to run de Office 2013, les mises à jour Office ne descendent plus par Windows Update comme précédemment. Pour procéder à la mise à jour, il est nécessaire d'ouvrir un logiciel Office (Word,Excel,...) puis d'aller dans "Fichiers"/"Compte office" et sélectionner "Mise à jour"...





11 août 2015

INFOPATH : Vider le cache

Lors de l'utilisation de formulaires InfoPath (en mode client lourd), stockés dans SharePoint, il peut arriver que le formulaire n'ouvre pas la dernière version du modèle de formulaire.
Ce problème provient du fait que le modèle de formulaire est stocké en cache localement sur votre machine.
 
Pour utiliser la dernière version du modèle, il suffit d'utiliser la commande suivante permettant de vider le cache d'InfoPath de votre PC:
  • Lancer une fenêtre "Run" sur votre ordinateur (Windows + R),
  • Taper la commande "Infopath /cache clearall" et appuyer sur "OK",
  • InfoPath s'ouvrira sur votre machine et vous vous apercevrez que l'historique des modèles de formulaire aura disparu.
 
Le tour est joué, vous pourrez à présent utiliser la dernière version du formulaire.

10 août 2015

SHAREPOINT 2013 : Contrôle des développements

 
L'utilisation massive de SharePoint dans les entreprises impose aux sociétés de s'assurer de la bonne santé de leur environnement SharePoint 2013.
Cela commence par une infrastructure qui tient la route, une topologie adaptée mais aussi et surtout par un contrôle des développements réalisés.
 
En effet 90% des dégradations des performances sur des environnements SharePoint proviennent de développements ne respectant pas les guidelines et bonnes pratiques de Microsoft (objets SP non disposés, requêtes CAML sans RowLimit,...).

Après l'essai de divers outils du marché, il me semble que l'outil "SPCAF" (SharePoint Code Analysis Framework) est parfaitement adapté à ce genre de besoins. Le site de l'éditeur est disponible à l'adresse suivante : http://www.spcaf.com/
 
Cet outil se décompose en 2 axes principaux :
  • Une application cliente permettant d'inspecter un WSP. Cette partie est plutôt orienté chef de projet avant livraison ou client final,
  • Un add-in pour Visual Studio permettant de contrôler le code tout au long de la phase de conception de la solution VS. Cette partie est donc plutôt orientée développeur SP.
 
Les contrôles de qualité sont réalisés selon diverses catégories :  bonnes pratiques, sécurité, design, déploiement, ressources, interface utilisateur. Les règles sont prédéfinies mais peuvent être étendues si besoin. Après utilisation, je peux vous assurer que les règles natives sont très largement suffisantes!
Chacun des éléments remontés par l'analyse sont classés selon leur criticité : critique, sévérité haute, sévérité moyenne, sévérité faible.
 
Pour compléter le tout, ce produit permet aussi de générer:
  • des métriques de code (XML, ASPX, HTML, CSS, JS),
  • des inventaires (champs, types de contenus, définitions de listes, WebParts),
 
Il est très rare de faire de la promotion pour des outils commerciaux mais la qualité de ce produit en fait un élément incontournable dans la trousse à outils SharePoint!

28 juillet 2015

WINDOWS SERVER 2012 : Référencer une dll manuellement

L'installation d'une dll dans le GAC d'un serveur Windows Server 2012 peut-être réalisée via PowerShell.
Windows Server 2012 ne présente pas de commande "GACUTIL" par défaut et il n'est pas possible de réaliser un drag and drop dans le catalogue des assembly comme sur les anciennes versions.
 
Pour enregistrer une dll, il suffit d'utiliser les commandes PowerShell suivantes:
 
 Set-location "c:\dlltemprepository"
 [System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
 $publish = New-Object System.EnterpriseServices.Internal.Publish
 $publish.GacInstall("c:\dlltemprepository\dllName.dll")
 iisreset


Pour supprimer la dll, il suffit d'utiliser les commandes PowerShell suivantes:
 Set-location "c:\dlltemprepository"
 [System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
 $publish = New-Object System.EnterpriseServices.Internal.Publish
 $publish.GacRemove("c:\dlltemprepository\dllName.dll")
 iisreset


15 juillet 2015

SHAREPOINT 2013 : Work management service

 
Aujourd'hui un article sur un service applicatif souvent méconnu dans SharePoint : "Work management service". Ce service a fait son apparition dans la version SP2013 et répond à un problème souvent rencontré par les utilisateurs de SharePoint : Comment centraliser les tâches d'un utilisateur dans un seul espace!

Dans les versions précédentes du produit, certains éditeurs s'étaient engoufrés dans le besoin afin de répondre au besoin. Pour combler le manque de solution natives, Microsoft à mis au point ce service qui s'appuie nativement sur des tâches de type:
  • SharePoint : Tâches associées aux types de contenus "TasksWithTimelineAndHierarchy", "Task", "GanttTasks",
  • Project server (si installé et configuré),
  • Exchange server (uniquement pour SharePoint Server).
  • Custom provider : Il est en effet possible d'étendre les capacités de ce service en connectant d'autres systèmes de tâches (tâches TFS,...) via un custom provider.
 
Le principe de fonctionnement du service pour les tâches de type SharePoint est le suivant:
  • Un élément est rajouté dans une liste de tâche SharePoint 2013,
  • Le moteur de recherche indexe le contenu de ma web application (dont ma tâche),
  • Lorsque du rafraichissement de la liste des tâches du site personnel, une interrogation au moteur de recherche permet d'agréger la liste des tâches personnelles de l'utilisateur saisies à cet emplacement avec la liste des tâches disponibles sur les différents environnements (certaines informations telles que les projets sont conservées en cache). Les tâches seront groupées par projet afin d'obtenir une information de qualité.
  • Des notifications d'affectation de tâches apparaissent pour avertir l'utilisateur.
 

7 juillet 2015

SHAREPOINT 2013 : Test-SPContentDatabase

Un axe de gouvernance des fermes SharePoint reste la vérification de vos sources de contenus.
Pour se faire, il existe la commande "Test-SPContentDatabase" qui est souvent utilisée dans le cas des migrations avant de lancer un "Mount" de cette base.
Dans le cadre de migration, elle permet de détecter les différence de configuration entre vos fermes sources et de destinations et permet de s'assurer qu'aucune personnalisation ne soit oubliée:
  • Missing Assembly,
  • Missing SetupFile,
  • Missing Feature,
  • Missing WebPart,
  • Claims configuration,

Mais cette commande peut très bien être utilisée en dehors d'un scénario de migration afin de vérifier l'intégrité de vos bases SharePoint. Il peut devenir un outil de gouvernance révélateur de la bonne santé de vos bases de données de contenus.
 
Voici un petit script PowerShell permettant de scruter la totalité des bases de contenus de votre ferme SharePoint (avec enregistrement des résultats dans un fichier CSV par base):
 
 
Add-PSSnapin Microsoft.SharePoint.PowerShell
$SaveFolder = "C:\TEMP\"
Foreach ($DBContent in Get-SPContentDatabase)
{
 Write-Host "Testing Web Application -" $DBContent.WebApplication.DisplayName -ForegroundColor Green ;
 Test-SPContentDatabase -Name $DBContent.Name -WebApplication $DBContent.WebApplication.Url -ServerInstance $DBContent.Server | ConvertTo-Csv | Out-File -Encoding default -FilePath $($SaveFolder + $DBContent.Name + ".csv")
}

24 juin 2015

SHAREPOINT 2013 : Personnalisation du suitebar

Lorsque vous administrez de nombreuses fermes SharePoint (Développement, Test, UAT, Production, Fermes de services, ...) , il est vite arrivé de confondre les environnements.

Outre la technique de modification du thème de l'administration centrale pour les distinguer rapidement, il peut être intéressant de disposer d'une présentation de la ferme (agrémenté de sa version de patch par exemple).
 
Pour se faire, il est possible de personnaliser le "suitebar" de l'administration centrale pour insérer ces informations. Il suffit d'ouvrir un éditeur PowerShell pour SharePoint et de lancer les commandes suivantes :
 
$ca = Get-SPWebApplication -IncludeCentralAdministration | ?{$_.IsAdministrationWebApplication -eq $true}
$ca.SuiteBarBrandingElementHtml = "
SP2013 - Ferme de développement - Build May 2015 CU (15.0.4719.1000)"
$ca.Update()

 
Voici le rendu : 
 
 

5 juin 2015

SHAREPOINT : Lenteur people picker

Petit retour d'expérience sur un incident rencontré sur une ferme SharePoint d'un client : Le sélecteur de personnes de SharePoint prenait subitement énormément de temps à résoudre les utilisateurs.
Le case était le suivant:
Lorsque l'on saisi le nom de l'utilisateur exact et que l'on valide, la résolution de l'utilisateur est réalisée rapidement. Par contre, lors de la recherche de l'utilisateur via le dictionnaire, le temps de recherche dépasse plus de 20 secondes.
 
Comme cela est souvent le cas, il s'agit d'un problème de firewall. Ceci étant vérifiable grâce à des captures NetMon ou Wireshark.
 
Après aprofondissement, il est conseillé de disposer de l'ouverture des ports et protocoles suivants pour le bon fonctionnement de votre people picker SharePoint:
  • TCP/UDP 135, 137, 138, 139 (RPC),
  • TCP/UDP (défaut : 389) (LDAP),
  • TCP (défaut : 636) (LDAP SSL),
  • TCP 3268 (LDAP GC),
  • TCP 3269 (LDAP GC SSL),
  • TCP/UDP 53 (DNS),
  • TCP/UDP 88 (Kerberos),
  • TCP/UDP 445 (Directory Services)
 
 
 

3 juin 2015

SHAREPOINT 2013 : The Managed Metadata Service or Connection is currently not available

Lors de l'administration de vos fermes SharePoint, il peut arriver de rencontrer cette erreur sur le service de métadonnées gérées (qui fonctionnait parfaitement la veille).
 
 
L'erreur disponible dans les logs ULS n'est généralement pas très parlante:
Failed to get term store for proxy ‘Managed Metadata Service’. Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
 
Après les vérifications d'usage, il est possible de réaliser les étapes suivantes pour essayer de corriger le dysfonctionnement:
  • Redémarrer le service métadonnées géréees sur la ferme (depuis "manage services on server"),
  • Vérifier que les autorisations et permissions sont correctement positionnées sur le service de métadonnées.
 
Si cela ne fonctionne pas suite à ces modifications, il est possible de réaliser la modification suivante pour remettre le service en état actif:
  • Cliquer sur "Propriétés" sur le service de métadonnées gérées (depuis "Manage service applications"),
  • Modifier le nom de la base de données associée au service, ainsi une nouvelle base de données sera créée sur le serveur (par exemple "SP13_MMS_TEMP"),
  • Suite à cette manipulation, vérifier que le service s'ouvre correctement (il n'affichera pas de données car la base créée précédemment est vierge),
  • Repositionner l'ancien nom de la base de données de métadonnées (avant le renommage en "SP13_MMS_TEMP"),
  • Vérifier que votre service de métadonnées gérées est à présent opérationnel.
 


 
 

26 mai 2015

SHAREPOINT 2013 : Filtrer une vue par format date et heure

Aujourd'hui, un retour sur un besoin simple : Comment filtrer une vue SharePoint selon un format date/heure?
Nativement, via l'interface de conception de vue SharePoint, il n'est pas possible de filtrer sur autre chose qu'une date (le format heure n'est pas pris en compte et vous empêchera de valider vote filtre : "Le format de date de la valeur de filtre n'est pas pris en charge").
 
Pour réaliser ce besoin, il sera nécessaire d'utiliser du PowerShell afin de modifier la requête CAML permettant de filtrer la vue. La solution réside dans l'utilisation de l'attribut "IncludeTimeValue" qui permet d'utiliser des filtres sur les dates et heures:
 
$web = get-spweb "http://spdemolab/"
$list = $web.Lists["ListeAModifier"]
$view = $list.Views["Tous les éléments"]
$view.Query = "2015-05-22T19:40:00Z"
$view.Update()
$web.Dispose()
 
 
Le principe est donc une modification de la vue via son attribut "Query" puis une mise à jour de celles-ci.

12 mai 2015

MS IGNITE Chicago : Sessions

La semaine dernière a eu lieu le MS Ignite à Chicago.
Le but de cette grande messe est de remonter toutes les informations sur les futures orientations, les nouveaux produits et innovations de Microsoft.
Les sessions parlent donc essentiellement de Windows 10, SharePoint 2016, Yammer, Azure, ASP.Net vNext et bien d’autres…
 
Il est possible de récupérer en local toutes les sessions en utilisant le script PowerShell fourni par Vlad Catrinescu:http://absolute-sharepoint.com/2015/05/the-ultimate-script-to-download-microsoft-ignite-videos-and-slides.html
 
Pour récupérer ces vidéos, il suffira de lancer le script en ayant modifié au préalable l’adresse d’enregistrement sur votre PC grâce à la variable : $downloadlocation
Il est même prévu de filtrer sur les thématiques qui vous intéresse en passant un paramètre keyword lors de l’appel.
 
Enjoy!

5 mai 2015

SHAREPOINT 2013 : Supprimer les pages systèmes des résultats de recherche

Une remarque récurrente des clients lors de l'utilisation du moteur de recherche SharePoint par les clients est la remontée des pages systèmes dans les résultats.
Nous pouvons citer par exemple les pages allitems.aspx (associées aux vues), les "thumbnail.aspx" (pour les images), les pages situées dans le répertoire forms (excepté le dispform.aspx).
 
Pour supprimer ces résultats, il existe deux façons:
  • Vue une crawl rule (Règle d'analyse) dans le moteur de recherche de l'administration centrale. Dans "Chemin", entrer la valeur http://*/allitems.aspx puis sélectionner exclure dans la "analyser la configuration" associée:

    En utilisant cette technique, le nombre d'éléments dans le crawl va grandement décroitre (cf dans la copie d'écran ci-dessous, nous passons de 182 à 46):
 
  • En modifiant la requête sur chaque page de recherche. Il faudra alors ajouter la partie de requête suivante : "-filename:allitems.aspx" à la suite de l'habituel {searchTerms}. Le signe "-" permet de supprimer l'élément des résultats de recherche.
 
 
La deuxième solution reste plus fine et n'impactera pas tous les résultats de votre ferme SharePoint. Je pense notamment qu'elle pourrait s'appliquer à certaines pages de recherches spécifiques mais vous pourrez toujours renvoyer les bibliothèques et listes dans vos résultats de recherche sur les autres pages.

23 avril 2015

SHAREPOINT 2013 : Vérifier page en mode édition


Aujourd'hui un petit post sur la détection en JavaScript du mode édition sur une page SharePoint.
Sur une page de publication, il suffit d'interroger la valeur d'une variable existante:



Il est de même possible d'utiliser les modifications suivantes dans la page maitre sur un site de publication:



Il suffira à présent d'utiliser la variable "IsEditMode" pour tester que la page est bien en mode édition.
Mais ce serait trop simple si tous les cas étaient traités avec cette simple manipulation. Sur les pages Wiki, il faudra ajouter le script suivant pour détecter le mode édition:



Pour les pages de WebPart, il faudra utiliser le script suivant:

 
 
Il sera tout de même nécessaire de tester sur les 2 derniers scripts que les valeurs ne sont pas nulles avant d'accéder à la propriété value: 
(typeof document.forms[MSOWebPartPageFormName]._wikiPageMode != 'undefined'
(typeof document.forms[MSOWebPartPageFormName].MSOLayout_InDesignMode!= 'undefined'

17 avril 2015

SHAREPOINT 2013 : Mapper propriété UPS sur attribut AD

Le service de profil utilisateur de SharePoint 2013 met à disposition des propriétés utilisateurs pouvant être utilisées dans vos applications. Dans ce contexte, il peut être intéressant de mapper ces propriétés sur des attributs de l'Active Directory.
 
Pour se faire, il peut être intéressant d'utiliser un script PowerShell (l'avantage est qu'il permet un déploiement uniforme entre les divers environnements).

Le script suivant permet de parcourir chacune de vos connexions AD définies dans l'UPS et d'ajouter le mappage de la propriété AD "mail" sur la propriété utilisateur "WorkEmail".
# Récupération du UPS associé au site sharepointsite
$site = New-Object Microsoft.SharePoint.SPSite "http://Sharepointsite"
$context = [Microsoft.SharePoint.SPServiceContext]::GetContext($site)
$configManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileConfigManager $context
# Parcours de toutes les connexions AD définies dans l'UPS
foreach ($ADConnection in $configManager.ConnectionManager)
{
     Write-Host $ADConnection.DisplayName -foregroundcolor blue
     # Ajout du mappage de la propriété "WorkEmail" sur l'attribut AD nommé "mail"
     Write-Host $ADConnection.DisplayName "- Workemail" -foregroundcolor green
     $ADConnection.PropertyMapping.AddNewMapping([Microsoft.Office.Server.UserProfiles.ProfileType]::User,"WorkEmail","mail")
     ...
}
 

12 avril 2015

SHAREPOINT 2013 : Liste des collections de sites

Aujourd'hui, une petite commande PowerShell utile pour tout administrateur SharePoint.
En effet, certaines interfaces de l'administration centrale de SharePoint ne sont pas conçues pour synthétiser l'information, il est donc nécessaire de réaliser des extractions ou des audits via les applets de commandes PowerShell pour SharePoint.

La commande ci-dessous permet de d'obtenir la liste des collections de sites présentes sur une ferme SharePoint ou sur une application web spécifique.
 
Get-SPWebApplication -Limit All | Get-SPSite | Format-Table -Property URL,ContentDatabase, Owner, SecondaryOwner
 
Pour expliquer le fonctionnement:
  • Get-SPWebApplication récupère une collection d'applications web. Le paramètre -Limit All permet de ramener toutes les applications web de la ferme SP. Il serait possible de spécifier une application web particulière en précisant l'url,
  • Get-SPSite : Récupère la liste des collections de sites associées à la (ou les) application(s) web SharePoint.
  • Format-Table : Affiche les données en renvoyant les propriétés sélectionnées.


Tout cela en une seule ligne, merci Powershell! Réaliser la même chose en code managé aurait pris au moins une vingtaine de lignes.
L'utilisation de PowerShell pour administrer et auditer SharePoint doit être un reflexe.
 

23 mars 2015

WAC : Vérifier la version de votre serveur Offce Web Apps

Sur un serveur WAC (Office Web Apps 2013), il n'existe pas d'interface déportée, comme l'administration centrale de SharePoint, permettant de trouver votre niveau de version.
 
Si vous allez dans les programmes installés sur le serveur, vous n'obtiendrez que la version classique (RTM, SP1,...) mais pas plus.
Comme dans SharePoint, il n'est pas possible de déterminer la CU ou le patch de sécurité installé via cet écran.
 
Pour se faire, il suffit de se connecter de vous connecter sur votre serveur Office Web Apps et de lancer la commande PowerShell suivante:
get-content C:\ProgramData\Microsoft\OfficeWebApps\Data\local\OfficeVersion.inc
Le résultat sera le suivant:
 
Par exemple ici, il s'agit de la build 15.0.4701.1000 correspondant au patch de sécurité "Mars 2015".